home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Merciful 2
/
Merciful - Disc 2.iso
/
software
/
i
/
imagine_compendiumappen.txt
< prev
next >
Wrap
Text File
|
1995-10-14
|
162KB
|
2,976 lines
The Imagine Compendium: Appendices
======================== INDEX ==========================================
APPENDIX A: DETAIL TUTORIAL (by Steve Worley)
APPENDIX B: FORMS TUTORIAL (by Steve Worley)
APPENDIX C: VIDEOTAPE
i) dumping to videotape
ii) comments on dumping to videotape
iii) more comments on dumping to videotape
APPENDIX D: CENTAUR TAPE:
i) review
ii) second review
APPENDIX E: SURFACE MASTER
i) Advertisement
ii) Review 1
iii) Review 2
iv) Additional Details
APPENDIX F: TTDDD (an excellent shareware package).
i) getting coordinates with TTDDD.
ii) making threads.
APPENDIX G: WAY COOL PROJECTS
i) extruding picture
ii) rolling sphere
iii) 3-D font
APPENDIX H: Credits and email addresses
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
APPENDIX A: DETAIL TUTORIAL (by Steve Worley)
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
This file is a tutorial introduction to the Detail Editor. It
describes the way Imagine stores objects, how Imagine interacts with
you to show the objects you are building, how you can build and
manipulate these objects, and make complex objects formed of many
sub-objects.
A later tutorial will describe the more advanced features of the
Detail Editor which allows you to manipulate objects in much more
complex ways, like cutting one object with another, making outlines
and filling them with faces, defining objects by successive cross
sections, and bending objects around tubes and spheres, and
even using outlines as a lathe guide.
A third tutorial will be a more general discussion of the approaches
to object creation, discussing how to plan and actually build your
objects as opposed to what each menu item in the Detail Editor does.
This tutorial is more basic than most of my others. I realize
that many people will be disappointed, but I feel it is necessary to
give an introduction describing how objects are defined and how the
standard controls in the all of the editors are used. New users will
GREATLY appreciate a description of the goals of the Detail Editor and
how objects are defined and used in Imagine before delving into a
description of the suboptions of each menu item. For those of you who
are looking for a more hard-core Detail tutorial, none to fear! It's
my next project, and it will should blend into a nice, logical
successor to this tutorial. Even those who scoff at this introduction
might want to read it anyway; there are a lot of subtle points
(especially about pick and select!) that are well worth learning
about.
This tutorial describes the Detail Editor in Imagine version 1.1. There
are only minor differences (Taut and Fracture) from version 1.0.
An Introduction to the Detail Editor
Last Revised 6/11/91
By Steven Worley
-------------------------------------------------------------------------
I. What are Imagine objects?
-------------------------------------------------------------------------
When a computer program wants to draw a 3D object, it must have some
way of internally representing it. Some modelers store each object as
a bunch of 2 dimensional polygons- a 3D object is a formed from a
whole bunch of these polygons pasted together. A cube might be defined
as six 2D squares arranged in a group. Since our final picture just
has to LOOK like it is solid, defining the outer surface is usually
all we need to do to make it seem as if the objects ARE solid.
Any object can be defined as a bunch of flat polygons. Curved surfaces
like a sphere can use a lot of polygons in order to approximate the
surface closely; certain computer tricks (including a very important
one called Phong shading) can smooth out the surface even more. Most
of the 3D objects, or models, that you've ever seen in any 3D computer
graphic were defined as polygons. Sometimes advanced programs define
surfaces with a mathematical equation, or by a certain type of curve,
and sometimes a computer model will have certain objects it "knows"
how they should look (like a mathematically defined sphere or cone)
but most use polygons for definition, Imagine included.
All objects in Imagine are defined as a bunch of triangles. Nothing
more. It is particularly easy for a computer to decide what a
triangle would look like when viewed as a 3D image. Any more complex
polygon (like a square or octagon) can be broken down into a bunch of
triangles pretty easily. Having only one "shape" to deal with is
actually a convenience for us, as we don't have to worry about
questions of what type of polygons a certain object is made of, or how
to convert one type of polygon into another. The computer likes
dealing only with triangles because it can optimize it's renderer, the
program that actually draws the pictures, to expect and deal with just
one shape simple instead of 246 different ones.
Although an object is made of only triangles (called FACES) it has
points and edges which define where these faces go. If you think of a
simple triangle, it has 3 defining points at the corners, three edges
connecting these points, and one face which actually makes up the body
of the triangle. Imagine can better deal with the objects by defining
these sub-parts, and it allows us to manipulate the objects much more
easily.
Every object has a number of defined POINTS. Imagine understands an
EDGE to be a line segment that connects any two of these points. A
face is defined by naming the three edges that make it up. Instead of
storing nine numbers for each triangle (the X,Y,Z location of each
corner) it just names the edges, which in turn name the points. This
reduces the size of a description of an object considerably. It also
helps in editing objects, since if you move a point, each face that it
is part of will adjust itself to the include the new location of the
point. The other alternative would be to have each face manually
manipulated individually, which is obviously a big pain.
Think of a square. Imagine would store a square as two triangles that
share one edge together. The square would actually contain FIVE edges
(the four sides and the diagonal) and FOUR points (one at each of the
corners.) It would have two faces, or triangles. A cube is stored as
twelve faces, formed by eighteen edges, which are in turn defined by
eight points.
This definition of objects actually gives us some extra leeway in how
we define our model. Imagine doesn't require your object to be
connected at all; that is, your object could be two completely separate
surfaces that never touch. You might want an object to be a flying
logo. The letters don't actually touch and form one solid object; they
are independent from each other. Imagine doesn't care; you can call
any collection of points, edges, and faces an object. Imagine also
gives you tools for splitting off part of an object (like a letter) or
joining two parts together.
Since this is a computer model and not a physical one, we can violate
physics and have objects self-intersect. You might overlap two spheres
half-way and join them together to form one object. You'll only see the
outer surface when you render the new double-sphere object.
There actually are two objects that Imagine does not define as a group
of points, edges, and faces: a perfect sphere and an infinite plane.
These are the only exceptions to the normal definition of objects in
Imagine. Well, OK, there's another. An axis containing NO points can
still be manipulated as an object. It certainly won't show up in a
render, but sometimes it's nice to use a lone axis as an invisible
object in certain cases. You can also use the axis as the start of a
brand new object.
There are certain "Editors" in Imagine that allow us to view and
manipulate objects in different ways. Some editors let you place
objects in scenes, or define how the objects change with time. The
Detail Editor is where objects are usually created and modified. It
allows low-level editing of objects; you can add points and faces by
hand, move them, delete old ones and in general be as picky as you
like in adjusting every point.
Defining objects point-by-point is obviously not very suited to
complex objects, sometimes with THOUSANDS of points. There are more
powerful controls that let you modify your object in more global ways.
You can add pre-made 'primitive' objects like a cylinder or a torus
(doughnut shape.) These primitive objects have the points, edges, and
faces that define it already defined. There are certain tools that
let you draw an outline, say the profile of a chess pawn, which is
converted to a three-dimensional `spun' object, as if it was chiseled
out on a lathe. Other tools let you slice off parts of your object
using knives that you can build yourself. In general, object creation
is done with these powerful tools, and picky touch-ups are the only
time you grab and move individual points. A sculptor does not glue
sand grains together!
-------------------------------------------------------------------------
II. Looking at Stuff in the Detail Editor
-------------------------------------------------------------------------
The Detail Editor is the program that lets you manipulate and modify
objects in Imagine. Like the other editors (and any Amiga program, for
that matter) Imagine gets input and directions from you by either
moving the mouse and clicking it's buttons, or by typing on the
keyboard. Most advanced options use pull-down menus to select the
function you want to perform. An important trick, especially when you
start using Imagine a lot, is keyboard-equivalents. This lets you
select menu items via the keyboard, by pressing the right Amiga key
along with another letter or number. All of the keyboard equivalents
can be selected via pull-down menus, although not all menu items have
keyboard equivalents. You'll find that learning the most used
commands' keyboard equivalents can save a LOT of time. Its quick and
easy to punch right-Amiga-o to zoom your view out; pulling the menu
down repeatedly is a pain. A few other commands (especially moving,
rotating, and scaling objects) use the keyboard to indicate what you
want to do (move, rotate, or scale) while simultaneously using the
mouse to control the extent of the transformation.
You can get into it from any point in Imagine by selecting the menu
item 'Detail Editor' from the Project pull-down menu. The screen
should then split into four smaller windows with a thin status line at
the bottom of the screen and another at the top.
When you start up the Detail Editor, you'll see what is known as a
"Quad-View." Are four windows labeled "top", "front", "right", and
"perspective", which are different ways of viewing the object you are
manipulating. It is difficult to manipulate 3D objects with a 2D mouse
and a 2D screen, and the tri-view is a compromise that makes the best
of these unfortunate 2D restrictions.
The top, right, and front views show you the wire-frame skeleton of
the object you're editing. A wire-frame is a view of your object with
each edge shown as a line segment. Faces are NOT shown, so the object
looks like it's built from pieces of wire that join at the outside
edges of the object, hence the name wireframe. Wireframes have two
advantages; they are much faster to draw than "solid" models, and
since you can see _into_ the object, you can manipulate points and
edges on the interior of the object that you wouldn't normally see.
The top, right and front views are just that- a wireframe view of your
object shown from the three orthogonal (right angle) directions. There
is also a small axis at the bottom left corner of each view that shows
the world's X,Y,Z coordinate system. In Imagine, the X,Y,Z is defined
just like it is in mathematics- X is left to right, Y is in to out,
and Z is down to up. Some 3D programs define Z to be in-and-out, so
note Imagine's difference.
There is an absolute "world" coordinate system defined by these axes.
You can select "Coordinates" from the Display menu, which will
continually display the coordinates of the mouse pointer in the
world's X, Y, and Z system. The units that it measures in are
arbitrary, but it is often convenient to call them "Imagine Units."
Objects tend to be on the order of 10 to 100 Imagine Units in size,
since this is a comfortable scale to deal with when we design
scenes to be rendered.
There is a grid shown in the three main windows. This grid is used to
give you a sense of scale, and can be turned on or off in the Display
menu. The spacing between the lines can be set by choosing "Grid
Size", also from the Display window. The default is 20, which is a
reasonable starting size. Some commands let you use the grid to snap
objects to precise locations- these are the most common reasons you
want to change the grid size.
The fourth window (with no grid in it) is called the "perspective"
window, which allows you to view your object from any direction. You
can also change modes to view your object as a wireframe or as a
"solid" model, where the faces become opaque so that you cannot see
through your object. In this window, you CANNOT manipulate your
objects- it is a view only.
Each of the four windows can be quickly zoomed to take up the full
screen very easily by merely clicking on the tall narrow box to the
left of each view that contains the name of the window. The window
will expand to take up the entire screen, allowing you to have a
better view of whatever you're working on. To zoom back to the
quad-view, just click on the name to the left again. To go immediately
from a full screen display of one view to a full screen display of
another, you just click the name of the new view to the right. Being
able to see all four views at once is often an advantage, but so is
seeing a larger, more detailed view. This method allows you to quickly
and easily change how you look at your model.
Just to get a sense of how this works, pull down the menu item
'Functions' and select 'Add primitive'. Click on the 'Torus' button
and click on 'OK' to accept the default parameters. All this did was
make a pre-defined object that we can look at when we manipulate the
views.
You should see an object in all four of the windows. This is the same
object, just viewed from different directions. Remember the three main
views (Top, Front, and Right) all show a WIREFRAME view from their
respective directions, so the inside of the doughnut might look very
complex.
Perspective, the remaining view, also shows a wireframe view of the
doughnut. You can change the view by manipulating the two white
sliding boxes on the top and left of the window. The bottom white
slider lets you view from different directions AROUND the object. If
the slider is in the middle, you're looking at the front. If it's 3/4
of the way to the right, you're looking at the right hand side, and if
it's all the way in either direction, you're looking at the back. The
vertical slider on the right controls the ANGLE you're looking at the
object from. Centered is a level perspective, all the way up gives you
a straight-down view, and all the way down gives you a straight-up
view. By combining these two sliders you can look at your object from
any direction.
You can change the perspective view by selecting 'wireframe' or
'solid' from the Display pull-down menu. Solid takes longer to show
your object, but removes the points that are hidden, getting rid of
the X-ray wireframe view. A final way of changing the perspective view
is by selecting 'shaded' from the Mode pull-down menu and zooming the
perspective view to the full screen. This shades the object in false
black and white colors which sometimes lets you see the shape of the
object more clearly.
There are a few commands that let you change your absolute vantage of
your object. You can zoom your view (on all windows) in and out by
using 'zoom in' and 'zoom out' from the View menu. This lets you see
more of your object at once, or just a certain portion. Each zoom in
or out will double or halve the scale respectively. You can also
select a numerical zoom by selecting 'set zoom' in the View menu,
which allows more precise magnification levels by simply typing in a
number. Zoom in and zoom out are often used, so knowing the keyboard
equivalents of right-Amiga-i and right-Amiga-o can save a lot of time.
To scroll the views around, you can click in one of the three main
views, then use the arrow keys to move the view in whatever direction
you like. You'll notice that if you change one view, the others will
change as well- all of the views are linked so they show the same
volume of space. You can also scroll the view by telling Imagine where
you want the view centered. You select 'Re-center' from the View menu
and click on where you want the new center of your view to be. Usually
you click right in the middle of the object or area you're interested
in. The keyboard equivalent of right-Amiga-. (period) is very
convenient.
The display that Imagine shows you is very important, as it is your
interface in dealing with everything in the program. One important
option is found in the Display menu; it is called "interlace".
Interlace will change the screen resolution which the display uses. An
interlaced screen is 400 pixels high, whereas a non-interlaced screen
is only 200. Unfortunately, the interlaced display will flicker on
many Amigas. An Amiga 3000 or a "flicker-fixer" equipped Amiga will be
able to use interlaced mode without the flicker. The interlaced mode
allows much more detail and more precise location of points, so it is
by far the preferred mode to work in. Even if you do have a flickering
display, it is probably worth the annoyance to have the extra
resolution.
A couple ways to reduce the flicker if you have it: you can muck with
the monitor's contrast and brightness, or you can change the screen
colors using the imagine.config file (see my Project tutorial). My
favorite solution is wearing sunglasses- it works very well indeed,
and you look cool while using your computer.
-------------------------------------------------------------------------
III. Moving Stuff in the Detail Editor
-------------------------------------------------------------------------
Knowing how to move your views around is important, as when you're
manipulating an object you'll find yourself changing your viewpoints
around constantly. There is a whole new set of commands for moving
the OBJECTS in the editor around.
In order to manipulate an object, we either have to load an existing
one or start one from scratch. Imagine comes with several simple
pre-built objects called 'primitives' that are very convenient to use
as starting points for creating your own objects. Talking about these
primitives doesn't really belong at this point in the tutorial, but
it would be nice to be able to have something to look at and manipulate
as each of the viewing and manipulation commands are presented.
To make a primitive object, select 'add' in the Edit menu, and
'primitive' in the sub-menu. There are six simple shapes that Imagine
will automagically create for you. They are a sphere, a cylinder, a
cone, a disk, a plane, and a torus. When you select one, Imagine will
ask how many points the object should have.
With primitives like a sphere, the more points that define it, the
smoother its appearance is going to be when rendered. Remember that
even curved surfaces are made from triangles, and the surface becomes
better defined with each point added. However, an object with more
points than are necessary can become a burden; drawing the object in
the editor takes more time, and although the final rendered picture
with be higher quality with extra points, it will also take longer.
Thus, when you add new primitive objects, Imagine asks what level of
detail you would like.
For example, the sphere primitive asks how many circle sections and
how many vertical sections will make it up. The default is a
reasonable number of defining points. If you were looking for a higher
quality sphere because you were going to zoom in very closely to it,
you might use extra points. If the object is going to sit in the
background and not be examined closely, you might select fewer points.
Most of the time, the defaults serve as a nice compromise, but you are
much more likely to simplify the object as opposed to increase the
default level of detail. The plane primitive in particular lends
itself to simplification- most of the time you can bear with defining
the simplest plane possible (2 triangles) as opposed to the
overburdened default of a grid of 200 triangles.
Each primitive lets you define the numbers of points that define it;
the parameters that you can vary are all pretty self-explanatory. For
example, the cylinder lets you define how many points are to form the
circle around the rim, and also how many sections the body of the tube
should be defined as. Other options (available for some primitives)
are simple flags that define whether to close the ends of the cylinder
(to create a hollow tube versus a log) or to 'stagger points' in some
models. Staggering points increases the smoothness of curves- you
should almost always leave it on. Note that the disk and the plane
are actually flat objects- the others all have depth. All objects also
let you define their size; this is quite straightforward.
When you have loaded an object or added a primitive, you'll notice
that you can see each point and edge in the wireframe. In addition,
you'll see an AXIS, usually near the center of the object. In Imagine,
EVERY OBJECT HAS IT'S OWN INDEPENDENT AXIS. An object's axis helps
Imagine determine which way an object is facing, how it is scaled, and
even what it's position is. Imagine doesn't understand what the
objects ARE; it doesn't realize that a complex object like an airplane
should orient itself with wheels down instead of balanced sideways on
a wingtip. The axis actually defines the object's position; if you
ask Imagine to move an object, Imagine really just moves the axis, and
the object's points, edges, and faces are dragged along with it. When
you rotate an object, the rotation occurs around the object's axis, as
opposed to the world's absolute reference system. Scalings, where you
change the size of the object, also use the object axis as a basis.
When you want to manipulate a certain object, you have to tell Imagine
which one (or ones!) that you're interested in, since you might have a
dozen different object loaded at once. The way of choosing an object
so you can manipulate it is just by clicking on it's axis. The object
will turn a pretty blue color (or sometimes purple- more later!) which
indicates that the object is chosen- any manipulation commands will
be done on this one object. The object is said to be "picked", and
Imagine knows that you want to apply commands to this object as
opposed to another.
Once you've picked an object, the most common manipulations are to
move it around, rotate it, or scale it. These basic commands are often
used, so Impulse has made it pretty easy to do. When you have a
selected an object, you type the letter 'm' for move. The object will
disappear (!) and be replaced by a big yellow "bounding box" which
encloses the volume where your object was. This bounding box
represents the size, shape, position, and orientation of your object.
Since the box is so simple to draw, Imagine can update it in realtime
as you manipulate it, allowing you to position it quickly and easily.
After selecting the object and pressing "m", Imagine knows you want to
move the object. Putting the cursor in any of the three main views,
pressing the left mouse button and then dragging the mouse will drag
your object in the direction you move. You do not have to click on the
yellow box; anywhere in the view is fine. You can keep moving the
object as long as you like; you can let go of the mouse button, move
the pointer to another position in any of the three views, and
continue moving the object. You are also welcome to zoom in and out,
make one view full-screen, or re-center your views at any time. When
you are finally done moving your object, pressing the space bar will
accept the change and your object will be displayed as a wireframe in
it's new location. If you've made a mistake, you can press the ESC
key instead of the space bar. This also exits the move mode, but the
object's position is unchanged from where it was before you started to
move it. This is obviously useful for fixing mistakes or changing your
mind.
Two other commands work much like move: rotate and scale. If you
select your object and press "r", you will rotate your object, and
you'll see the yellow bounding box spin as you drag the mouse with the
button down. You can also change spin axes (to pitch or bank the
object, as opposed to yawing it) by pressing "x", "y", or "z" to
define which axis you want to rotate around. All rotation is done
around the OBJECT'S axis.
Scaling is done by selecting "s" and dragging the mouse. Again,
scaling is done relative to the OBJECT's axis. If the axis is in the
center of the object, the object will grow in all directions. If it is
at the bottom, the object will grow up and out, but not down.
Each of these three commands (move, scale, and rotate) can be called
either when you've picked an object or during any other move, scale,
or rotate command. For example, you might pick an object, press "m"
to move the object, position it in a new place, press "r" to spin it,
then "s" to scale it. You do not have to press the space bar after
every change; only after you are finally satisfied with the new
location, size, and orientation of your object do you want to press
the space bar to accept the changes you've made. Aborting by using
the ESC key will remove all of the changes (movements, rotations, and
scalings) that you've made.
These manipulation commands are easy to use, and they have other
controls that make certain manipulations even easier. At the bottom of
the screen, there is a status bar that will highlight which mode
you're in. If you are moving, the "M" in the "M=Move" at the bottom
of the screen will be highlighted, and the "R" and "S" highlight when
you're rotating or scaling.
The "x", "y", and "z" commands that allow you to change rotation axes
also work in moving and scaling. They act in these two modes as
toggles- when you start a move, you are free to move it in all three
directions, X, Y, and Z. You might want to restrict a direction of
motion, though, if for example you are moving a table along a floor
and you didn't want to accidentally lift the table into the air as you
moved it left and right. Pressing the "x", "y", and "z" keys will
toggle the allowable directions on and off, so pressing "z" will
anchor the table's height, and pressing "z" again will allow you to
lift it up if you change your mind. This also works in the scaling
mode; if you want to make an object narrower without changing its
height, you might toggle "z" and scale the object down. With the "z"
toggle off, the object will maintain it's Z height, but will shrink in
the X and Y directions. At any time, the display at the bottom of the
screen shows the letters "X-Y-Z" and highlights the directions that
are "active" or changeable.
A related shortcut is using the capital letters "X", "Y", and "Z",
which set the toggles to allow movement and scaling in one direction
only. If you wanted to lift a table straight up, you just type "Z"
and the table will be free to move up and down, but not in the X or Y
directions. This method of setting the toggles overrides whatever
position they were set in before, but you can use the individual
toggles afterwards to set whatever freedoms you like.
Imagine gives you even more flexibility if you want to use it.
Whenever you move, rotate, and scale an object, it is based on a
certain coordinate system. The default is to use the standard
coordinate system- the set of axes that is fixed in place and shown at
the bottom left of the three main views. This is called the "world"
coordinate system. However, each object has it's own "local"
coordinate system, defined by it's own axis. Imagine allows you to use
a local coordinate system instead of the world system if you like.
For example, if you have an object in the shape of a plane, the local
coordinate system probably has the Y axis (going front to back) in
line with the main fuselage of the plane. Using "r" to rotate the
plane, you can easily position it so that it is angled up like it is
climbing into the sky. If you then wanted to move it in a straight
line along it's "flight path", the direction it's pointing, you could
select move, and try to judge by eye the new position in the direction
in front of the plane. If, instead, you select local mode (by using
"l") and restrict motion along the Y direction by typing "Y", the
plane will move smoothly along the line it's pointed along. In the
world coordinate system, it's moving in both the Y and Z directions,
but in it's local coordinate system, it's moving only in it's Y
direction.
To switch between coordinate systems, you just type "l" and "w"
whenever you want to change. The current coordinate system has L or W
highlighted at the bottom display just like the X-Y-Z indicators.
Many times the local and world coordinate systems will be the same, so
one is equivalent to the other.
One final option when you're manipulating objects allows you to
manipulate the axis of the object independently. If you want to move,
scale, or rotate an object's axis [without simultaneously affecting
the object!] you can use "M", "R", and "S", the capital letter
versions of the object manipulation commands, to affect only the axis.
There are some occasions you might want to do this for fancy tricks,
but most of the time, you just want to move the axis around just so
that it lies near the center of your object.
The standard commands to move, rotate, and scale objects have been
streamlined for ease of use since they are performed so often.
Sometimes, however, they are somewhat lacking, especially when you
need precise control over how your object is to be manipulated. For
the precise control of object manipulation, Imagine has a special
command called "Transform" which allows you to numerically control
your object as opposed to judging by eye.
The transform command works much like the standard interactive
commands in that you first select your object (by clicking on it's
axis) and then telling Imagine what to do to it. To enter the
transform command, you click on the object (it becomes blue or purple)
and pull down the menu item "transform" from the Object menu. A small
requester will appear. You have six options you can choose from:
translate, rotate, scale, position, alignment, and size. You also
enter X, Y, and Z arguments.
Translate takes the X, Y and Z arguments and moves (translates) the
object that distance.
Rotate will rotate the object around the axis you specify by an amount
(in degrees) you specify in X, Y and Z. Performing more than one
rotation at once is legal, but it is easy to make mistakes in final
orientation. If you rotate around more than one axis at once, the Z
rotation is performed, then the X rotation, then the Y rotation.
Scale will scale your object by a certain factor. To double the size,
just enter 2 in each of the X, Y, and Z boxes. A negative number is
completely legal, and if one or three of the scalings is negative,
you'll actually get a scaled mirror image of your original object.
Position is like Translate in that it moves your object. Instead of
moving a certain distance, however, it moves to absolute world
coordinates.
Alignment is also absolute; it will rotate your object in whatever way
necessary to align in the direction you specify, regardless of the
original orientation. Setting X, Y, Z all to zero will make the object
line up exactly with the world axes.
Size is again absolute. It uses the axis size as a benchmark, and will
scale the object (and it's axis) to an absolute size. The "default"
size that all axes start out at is 32 Imagine Units, so entering an
XYZ size of 32 32 32 will bring most objects back to their virgin
sizes.
To use any of these sub-commands, just click on the box next to it's
name and type in the appropriate X, Y, and Z arguments in the boxes to
the right. Selecting "OK" will perform the manipulations, "cancel"
will abort without affecting your object.
You have the option to use world or local coordinates, just as in the
interactive commands; just click on either box to decide. The default
is the world system. You can also manipulate only the axis (like the
capital letter commands in interactive manipulation) by selecting
"transform axis only."
Most manipulations use the interactive controls, and the
transformation requester is used only for accurate, measured changes.
One problem that you may run into after an interactive or a
transformed manipulation is a "dirty" screen. Imagine erases the old
object from before your move or scale or rotate, and draws it in the
new position. However, to save time, it will not redraw any other
wireframe object that was in view. This means that the areas were the
old object intersected any other object in the view will be blank;
part of the other object will be erased. If you want to check to see
if this is the case, you can select "Redraw" from the Display menu,
which will redraw all of the objects, eliminating the problem. One
case where this is almost necessary is when you have multiple copies
of an object at the same place. If you move one copy, the other isn't
redrawn. Since it was in the exact same location as the old, erased,
object, it looks like it has disappeared! This is easy to fix with
redraw. It is another oft-used command, so knowing the keyboard
equivalent of right-Amiga-r is handy.
A problem you'll run into when manipulating complex objects is the
sheer time it takes to redraw the wireframe model (in three views).
Imagine has a way to speed the display of these objects- it shows
the bounding box of the object (like the one shown in interactive
manipulation) instead of the wireframe. You LOOSE the detailed view
of your object, but you can still see the position, size, and
orientation. To make an object "quickdraw" in this mode, you can
use three commands in the Functions menu. "Quickdraw all" will make
all of the objects display in quickdraw mode. "Quickdraw none" will
make all objects display the normal wireframe. "Quickdraw pick" will
make your picked (blue or purple highlighted) object display in
quickdraw mode. These quickdraw boxes are very handy, and since
they can be toggled at any time in the Detail Editor, it makes sense
to use them when screen updates start to get too slow.
-------------------------------------------------------------------------
IV. Harvesting and Sorting with Pick
-------------------------------------------------------------------------
Since you can have many objects loaded at once, there has to be a way
for you to tell Imagine what object or objects you want to deal with.
You've done this already, by clicking on an object's axis, and
watching it turn color. This shows that the picked object is ready to
be manipulated on.
What if we want to manipulate more than one object at a time? A
standard way to "multi-pick" things (like icons in AmigaDos, or
objects in Imagine) is to use the shift key. By holding the shift key
as you click on objects, Imagine knows you want ALL of them picked,
not just the latest one. In fact, if you press the shift key, the
display line at the top of the screen will change to show how many
objects are picked. Commands will affect all of the picked objects,
not just one. In the case of moving, scaling, and rotating more than
one object, the FIRST picked object's axis defines the basis of all
the manipulations, as well as the local coordinate system for
manipulating all of the objects.
There are easier way to pick many objects than by repeatedly clicking
on each object's axis. Imagine allows you to change how objects are
picked by the "Pick Method" submenu in the Modes menu. The default is
"click", which means that when you click directly on an object's axis,
it will become picked. Other methods of picking can be chosen from
the pick method submenu. If you use "drag box", instead of clicking on
the object axes, you should press and hold the mouse button while
dragging the mouse. A large box will follow your mouse, and when you
release the button, an object within the box will become picked. If
you press and hold the shift key when you release the mouse button,
ALL of the objects within the box will become picked.
Lasso is similar, but more versatile. You press and hold the button
while drawing a large circle or oval or squiggly shape. When you
release the button, an object within the region you've drawn will
become picked. Again, you can hold the shift key to pick ALL of the
objects within.
A final option in the pick method submenu is called "Lock". Lock isn't
a method of picking; it really has more to do with when moving picked
objects. Lock is a flag; you can toggle it on and off by selecting it
from its submenu. When Lock is on, any moved object will snap to the
nearest grid location when released. This is automatic and is easier
than using the one-time "Snap to Grid" (described later, I promise!)
again and again when you're trying to get precise placement.
Two other utility commands can be found in the Pick/Select menu.
"Pick all" will pick ALL of the objects in your workspace. "Unpick
Last" will allow you to remove the last object you picked from your
set of picked objects. This is handy when you pick one too many
objects and you want to unpick the last one you chose.
It is easy to pick objects or sets of objects using the different pick
methods. There is actually another powerful way to change what object
or objects are picked; it is called "select." There is a very, very
important difference between a "picked" object and a "selected"
object; you've been using pick to highlight objects and manipulate
them. Select is sort of a pick-wanna-be.
One problem that can occur is when two object axes are directly on top
of each other. If you click on the common axis location, one of the
objects will become picked. (The first one that was created or loaded
into the Editor). If you click again, the same object will remain
picked and the second object will just sit there. If you hold the
shift key and click on the common axis again, the second object WILL
be picked, but now BOTH objects are picked. If you want to pick just
the second object and not the first, you can either MOVE one object
just to uncover the other axis, or you can use select.
There is a solution when picking (or unpicking) objects becomes
awkward (or impossible!). SELECT allows you to control what objects
are picked by allowing you to add and remove objects from your set of
picked objects one at a time.
Think of buying lunch at a cafeteria, and you pick which food you want
to eat. One way of "picking" food to add to your tray is by having the
lunch worker point to each of the cafeteria's food bins, and saying
"No, the next one, the next one, the next one- yes! That one!" as the
worker points to the foods in turn. As the worker selects item after
item, you can choose to PICK the item he's pointing to at any time.
The analogy extends; What if your arms are full of cafeteria food and
you want to put some back? Your arms are busy holding all the food;
you can't easily grab an item and put it down. You can, however, ask
a friend to "unpick" the item for you. If your friend has trouble
with big words (like the names of food), he can just point at each
food in your arms in turn until he points to the granola yogurt you
want to put down. You then say "Yes, yes! Get rid of that!"
This is exactly what select allows you to do. Your arms are full with
picked objects. You can't just click on an object to "unpick" it
because Imagine thinks you're just making sure you have it picked. You
also might have problems indicating the right object to pick, as in
the case of two objects on top of one another. The major difference
between the the cafeteria and Imagine is that your mentally challenged
friend is also the cafeteria worker, and will point to both types of
objects for you.
Select works by allowing you to highlight different objects in a
controlled way. A "selected" object might be picked or not; A normal
object is white, a selected object is orange, a picked object is blue,
and a picked AND selected object is purple.
Only one object is ever be selected at once, which is helpful in
reducing confusion. The commands for selecting objects are completely
different from those of PICKing objects; the whole point of select is
that sometimes the methods used to pick objects are awkward, and
select gives you an alternative way to pick them.
The easiest and most common method of selecting an object is by using
two commands, "Select next" and "Select previous", both found in the
Pick/Select menu. Using "Select next" repeatedly will cycle through
all of the objects in the order that they were created or loaded.
This command does NOT care whether the object is picked or not; it
will select all objects one at a time. "Select next" is often a
command you want to repeat, so knowing the keyboard shortcut of
right-amiga-n is almost necessary. By repeatedly using select next,
ANY object can be selected because Select next will eventually reach
it. "Select previous", right-amiga-p, will select objects in the
opposite order, in case you overshoot with select next. One
convenience is that when an object becomes selected, your view will
jump to center the object on the screen, always allowing you to see
what you just selected.
When an object is selected, there are certain commands that will cause
it to become picked or un-picked. The most common command is called
"pick select", which can be found in the Pick/Select menu. When you
use this menu option, the selected object will become picked. If the
selected object is picked and you want to un-pick it, you can use
"unpick select" from the pick/select menu to unpick it.
"Select next" is kinda klunky, especially if you know exactly what
object you want to select. One quick command that is sometimes useful
is "Home", which selects the very first object you created or loaded
into the Editor.
Two other useful commands to quickly select specific objects are "Find
by Name" and "Find requester", both found in the Functions menu. "Find
by Name" allows you to type in an object's name (assigned in the
Attributes requester, more later) and your view will shift to center
on the object you named. In addition, the object becomes selected,
allowing you to pick-select or unpick-select it. The "Find by
Requester" does the same thing except it displays the names of all of
the currently loaded objects, and you just click on the name you want
to select. This requester is also useful because it tells you the size
(# of points, edges, and faces) of each object, which is an excellent
judge of object complexity. It's also fun to say "Cool! My tomato has
1,821 points!"
-------------------------------------------------------------------------
V. Hierarchies and Complex objects
-------------------------------------------------------------------------
With complex models, sometimes you don't want to make one huge, mungo
object to represent the entire model. You might want to make a forest
object that has 20 trees in it, and it seems silly to carve the whole
thing out of one block. Or, you might be building an object that is
logically a bunch of separate parts, like a clock with a face, a
pendulum, two hands, and a frame.
Another important ability you might want is to be able to give
different parts of a complex object different attributes, or colors.
Imagine lets you color and define the look of your objects in
different ways, and you can even tell it to make different parts of
the same object look different. But when you're building something
like a window, the glass panes are considerably different than the
wood frames; it is easier to define each as a separate object then
somehow group them together.
There is a function that lets you do exactly this- group objects
together. When you have a model that you want to make (and keep!) in
separate sections, Imagine allows you to establish a group of objects
which will stay together. It allows you to treat the group as an
entire ensemble (if you want to move everything, or apply a command to
the whole set), or you can pick out one particular object and deal
with it independently.
Grouping is very easy to do. If you want to group two objects
together, you click on one object, then press the shift key and click
on the other. Remember that this is just the method of picking more
than one object at once. When you have multi-picked the objects, you
select "group" from the Object menu. A purple line will appear joining
the axes of the objects. The first object that was selected becomes
the "parent" of the group. If you group more than two objects, the
purple "group" lines all run from each "child" object to the parent
object. This lets you see which axis to click on to pick the entire
group. Sometimes it is nice to assign a lone axis as the parent of a
group, especially when no part of a group really doesn't lend itself
to being a parent.
Splitting a group back into it's component parts is also easy; just
pick the group by clicking on the parent. The entire group will become
picked, and selecting "Ungroup" from the Object menu will split the
group. The purple joining lines will disappear, and each child will
be independent again.
Once a group is made, it can be treated almost identically to an
ungrouped object. You can pick it (by clicking on the parent) and the
entire group will become highlighted. You can then move, scale, or
rotate the entire group as a whole. If you click on a CHILD object,
the child will be picked, but not the group. You can then move, scale,
or rotate it independently of the group, assign it individual
attributes, or perform a command on it independently of the rest of
the group. Even when you move the child object around, it will STAY
grouped; you must use "ungroup" to ungroup objects. There are modes
where you can pick parents separate from their children; this is
described in the next section.
In addition, you can make groups of groups. Or groups of groups of
groups. This is done exactly the same as before; you can pick one
group, multi-pick a second, and group them. Having these multi-layer
groups is sometimes very useful. One excellent example would be in
modeling a human figure. You might make a finger group that contains
all of the knuckles, a hand group including a palm, four finger
groups, and a thumb group, an arm group consisting of a hand group, a
wrist, a forearm, and an elbow, and a body group consisting of a head
group, a torso, two leg groups, and two arm groups. This kind of
nested grouping is called a "hierarchy", where the body is the
great-granddaddy of a knuckle. One great advantage is obvious when you
want to move an arm. You pick the arm, and rotate it around the
shoulder. All of the arm's children follow it, so the arm moves as a
whole. You do NOT have to move 15 knuckles, a palm, a wrist, a
forearm, and so on. If you want to adjust a finger, you can manipulate
it and the knuckles will move together, but the arm will be
unaffected. If you move the main parent body group, everything follows
along as if the body were just one solid object, as opposed to dozens
of parts. Hierarchies are obviously suited for complex models.
Groups are useful when you have sub-parts of an object you want to
keep together. Sometimes grouping simple objects is still useful even
if there is no hierarchy to follow, since the individual objects are
free to move apart from the parent, and can easily be assigned different
attributes.
For example, if you're designing a human face, you might cause the
eyeballs in the head to be an additional grouped object as opposed to
just molded into the main face. Later, if you wanted to change the eye
(make it a different color, or replace it with a different type of eye
(chrome eyeballs! Cool!)) you can easily select the eye and change or
replace it. This advantage compounds the other advantages of grouping;
you can later animate the eyes looking in different directions, and
you can easily change the attributes or texture of the eye while
leaving the face undisturbed.
-------------------------------------------------------------------------
VII. Pick, Add, Drag. Pick, Add, Drag. Geez, how boring!
-------------------------------------------------------------------------
There are some useful commands that act on picked objects other than
just moving, rotating, and scaling. Two of the most obvious are "Load"
and "Save". Load will load a new object in from disk- it will give you
a file requester which you can choose the filename from. The most
common place to put objects are in your "objects" subdirectory in your
project directory.See the Project Editor tutorial for the complete
Imagine file structure.
Am important suggestion; use descriptive names and extensions. I
talked about this a lot in my Project tutorial, but it's worth
repeating. "Obj1" is going to mean nothing to you an hour from now.
"tablecloth.iob" tells you that this is an Imagine object of a
tablecloth- a useful description. Some suggested file extensions:
.iob Imagine Object. Loads into the Detail Editor
.iout Imagine Object which is a faceless outline
.ifm Imagine Form. Loads into the Form or Detail Editor
.iff Amiga picture or brush (standard)
.ham Amiga picture or brush in Hold-And-Modify format
.iff24 24-bit Amiga picture of brush. Highest quality.
.spth Imagine spline path
.lpth Imagine line path
Save will take the picked object or group and save it onto disk.
Note that GROUPS will save as one big group, as long as you have the
whole group picked by clicking on the parent. You can give the saved
object or group any name you want, and you'll probably want use an
extension of ".iob". If you pick a child of a group and save it,
you save ONLY that object (and its children), and NOT the entire group
it belongs to.
Another command you can apply to picked objects is "Snap to Grid" from
the Functions menu. It operates on all picked objects, moving each of
them so that their axis lies on top of the nearest grid intersection.
This is very useful in trying to line up objects or for precise
positioning. This is much like a one-time "Lock".
There are a few other utility object commands. "Cut", "Copy", and
"Paste" are found in the Object menu. "Cut" will remove your object
from the Imagine world and store it in memory. When you select
"Paste", the object will be re-inserted into the world at the same
place it was prior to the cut. In fact, the object is STILL retained
in memory, so you can move the restored object around and use "Paste"
again to get a second copy to manipulate. You can repeat "Paste" as
many times as you like to get copies of objects. "Copy" is like cut,
except the object is not removed from the world after being copied to
memory. You can use "Paste" to add multiple copies to the world.
Since the pasted objects are all put in the same location, often
you'll have to move one copy to get to the next. Judicious use of
"Redraw" can help in showing exactly what copies are still floating
around.
An incredibly useful command for making complex objects is called
"Join", which can be found in the Functions menu. If you pick two or
more objects, join will assemble them into one single object. The
new conglomerate object will have use the axis of the first object
that was picked, and will contain all of the points, edges, and faces
of all of the joined objects. Joined objects are difficult to
unjoin later, so only use it when you WANT a solid object. Join
is used constantly- you might build a car with the body sides, and
"join" on a side mirror, then join the roof on, then join the floor.
Remember the advantages of groups though; you probably DON'T want
to join the tires to the car; if you group them you can rotate them
later, as well as define the chrome hubcap separately from the car's
paint and the rubber tire.
"Merge" is also found in the Functions menu. It is more of a utility
command. It will remove any duplicate faces, edges or points in your
object. Especially after you JOIN objects, you might have a lot of
points lying on top of one another. Merge removes these extra,
unneeded points, speeding rendering and even display in the editors.
Merge also helps Phong shading; more about Phong shading in the soon
to come Attribute Tutorial.
Delete is pretty obvious command. It can also be found in the Functions
menu. When you use delete, every picked object will be removed from the
world. This command is used a lot to get rid of cruft and deadwood, so
knowing the keyboard shortcut of right-amiga-d is useful.
As with all of the editors, Imagine has one level of "Undo", which can
be selected from the Project menu. When using dangerous commands like
Delete, being able to recover from the command is important. Undo will
work with almost any command. You can also undo an undo, reinstating a
command you decided you wanted anyway.
-------------------------------------------------------------------------
VIII. Spraypaint and Picture Frames
-------------------------------------------------------------------------
The low-level commands to create and manipulate objects are sufficient
to create any model you can think of. An additional level of control
you have is the ability to define the surface color and attributes of
your object. A flat plane might be made of two triangles, but
depending on how you set the attributes of the plane, it might render
as a pane of glass, a reflective mirror, a wood tabletop, a piece of
graph paper, or a picture of your grandmother. Defining the surface
characteristics of objects gives them their character. Luckily,
Imagine gives you excellent control of these attributes.
Every object has a set of attributes that can be modified. In a group,
every object can have different attributes from the parent; when you
select a group, you only modify the parent's attributes. To change any
attributes, just pick an object and select "Attributes" from the Object
menu. A requester will appear, and you can select different properties
to change. In addition, you can place brush maps and textures on the
object, as well as add or change the object's name.
Choosing and setting attributes is immensely important to make your
objects look good. Setting textures and especially brushmaps give you
near-infinite control on what your object's surface looks like. I
have written full tutorials on both the use of texture and brushmaps,
and plan to write one on setting attributes. The choices in the
attributes requester are so important that they deserve a tutorial
unto themselves. I haven't written the attribute tutorial as of today
(6/11/91), but look for it by the end of July.
-------------------------------------------------------------------------
IX. A Mode for Every Season
-------------------------------------------------------------------------
The basic commands to pick, move, and view the world and everything in
it are very important, as they are used constantly. The actual work
you perform in building objects depends on the user changing the view
and manipulating the objects almost without thought.
No matter how good we are at manipulating objects and changing the
view, using these commands will never BUILD an object for us. To do
this, Imagine has different MODES that it performs different actions
in. Some modes allow us to manipulate objects and groups, as we have
been doing already. Other modes let us pick and manipulate not
objects, but the POINTS of an object, or the edges, or the faces.
Still other modes let us drag points around in different ways. Some
let us add NEW points, edges, and faces. (Aha! So that's how we can
build our own objects!)
These modes are easy to change; you can just pull down the Mode menu
and select which mode you would like to be in. The current mode is
always displayed in the status line at the top of the screen; this is
often handy when you get confused about what you're doing. The
keyboard equivalents for changing the current mode all use right-Amiga
and a digit; this makes the keypad become a "mode selector" if you
don't want to use the pull-down menus and have stuff it takes to
remember which digit is which mode. Personally, I don't have the
stuff, so I bear with the pulldown menu rather than strain my poor
brain.
The default mode is "Pick Groups", which means that whenever you click
on a group, it will be picked. (Simple!) If you want to pick
individual objects, EVEN IF THEY ARE THE PARENT OF A GROUP, there is
a mode called "Pick Objects." Just select it from the mode menu, and
now when you click on any object (in a group or not, child or parent)
it will be selected. You cal obviously multi-select it using the shift
key. When you are dealing with ungrouped objects, "Pick groups" and
"Pick objects" work identically.
Different modes let you deal with the different parts of an object. Up
until this time, we've always dealt with entire objects at a time. We
could rotate, scale, and move them, add them, group them, and delete
them, though we could not affect their basic structure. The remaining
modes all work on PARTS of objects, not objects themselves. One
important note is that to even enter these other modes, you must have
selected at least one object (or group) for the new modes to act apon.
You'll also find that I consistently lied to you in most of the
previous sections. I always referred to picking objects as opposed to
picking anything else. ALL of the pick and select commands except Find
work equally well in picking faces, edges, or points as opposed to
just objects or groups. Most other commands like Delete will work on
the parts of an object as well.
One new mode is "Pick points." If you pick an object or group and
enter the pick points" mode, the object will turn white (the object is
NOT picked anymore!) and it's points will all become visible (they
will show up as small squares.) Now you are in a different mode; you
are no longer picking and selecting OBJECTS, you are dealing
exclusively with points. You can then click on the points which will
turn orange as you pick them. You can use the shift key to multi-pick,
or the lasso and drag box to grab many points at once. You can also
select points, and use all of the selection tools to help you get any
subset of points you want. Selected points are green, picked points are
orange, and picked and selected points are yellow.
When you're picking points, edges, or faces, Imagine will work ONLY
with the points, edges, or faces in the object that was picked before
you chose the "pick points (or edges or faces)" mode. This prevents
you from confusing one object's points with another's. When you scroll
around your view or redraw the screen, the other objects won't even be
updated, so don't get scared if they seem to disappear. When you
re-enter pick objects or pick groups mode, all of the objects will
re-appear.
Just because you can pick something doesn't mean you can perform every
command on them. In the case of points, you can delete your picked
points, or use the transformation requester to translate them;
interactive dragging is actually another mode of it's own, though.
When you delete a point, you delete any edges and faces that that
point help form. You cannot do things to selected points that make no
sense (like grouping them, or saving them to a file)- that's just
weird.
You can perform some other commands that aren't applicable to objects
as a whole, however. For example, a very useful command is called
"split." It takes the selected points, removes them from the
original object, and gives them their own axis. In effect, the
original object is split into two parts defined by the points you
picked. Any connecting faces or edges are deleted (two objects do NOT
share!). This might be very useful when you have a logo and want to
pull one letter out of the object to do something special with it.
One command that is unique to pick points mode is "taut", which is
found in the Functions menu. If you select three or more points and
select "taut", the middle points will jump to the line segment defined
by the first and last points. This command might be useful to line up
a bunch of points in a straight line quickly. Taut does NOT work with
anything other than picked points.
Picked points can be manipulated with the Transform command. The
picked points can be translated, scaled, rotated, and positioned
INDEPENDENTLY of the rest of the object. Rotations and scalings all
use the object's axis as a reference point. Absolute positioning will
move the FIRST point you pick to the location you choose, and the
rest of the picked points will be translated an equal amount. Interactive
dragging is accomplished using the "drag points" mode.
Picking edges is similar to picking points, except to specify an edge
you just click on the two points that make it up, or lasso or drag box
the entire edge. Just like points, you can't perform every command on
them. You can delete them and split them.
You CANNOT translate edges or use taut on them. Deleted edges will
delete any face they belong to, but the points in the edges will NOT
be removed.
A new command you cannot perform on points but can use on faces is
called "fracture." This command is in the Functions pull down menu,
and is often very useful. The fracture command will take and break
each edge into two edges, with an additional point added to the
midpoint of each selected edge. This command is very useful when you
need to increase the detail level at a certain area of an object; the
extra edges that appear allow you to manipulate them to add finer
details and structures.
Select Faces is again pretty straightforward. You must click on ALL
THREE of the points that make up the face to select it. Fracture works
very well on faces; it splits each face (one triangle) into four
triangles defined by the midpoints of the face. The new faces can then
be manipulated for higher object definition.
Deleting faces removes the faces, but not the edges or points that it was
made up of.
Picked faces allow you to characterize an object's appearance in local
areas. The attribute requester normally allows you to give the object
overall color, reflection, and transparency values. You can actually
set these for every single face, if you like. You can pick one or more
faces, select "attributes" from the Object menu, and use the sliders
to set the color, transparency, and filter values for the face or
faces.
You will NOT see any change in the appearance of your object when you
do this, but when you render, the faces you selected will all override
the default object color with the attributes you selected. A danger is
that face attributes are somewhat fragile. If you join or merge
objects or start deleting or adding points to it, all face coloring is
often lost. To keep this from happening, color individual faces LAST,
just before saving your object.
A final note about face coloring; don't depend on it for coloring your
objects in complex ways. Using grouped objects or brush maps is much
more robust and allows better control. Coloring individual faces is
useful mostly for quick and dirty attribute definition or for making
small details that aren't worth the bother of a brushmap or extra
object.
Both "pick edges" and "pick faces" will allow you to split off the
selected parts of the object to create two new objects by using
"split", just as split works with selected points.
Three additional modes are "add points", "add edges", and "add faces".
Add points will add an additional point to your object in the location
you click on. Add edges lets you click on TWO points and will add a
new edge joining them. Add faces mode will let you add a new face to
an object by clicking on the THREE points that make it up.
"Add lines" mode is a convenient combination of "add points" and "add
edges". As you click, a new point is added in the location you point
to, and further clicks will add additional points along with an edge
joining the latest point to the one that was immediately preceding it.
Thus, a few clicks around the border of a rough circle will make a set
of points with the edges following the outline of that circle.
Carefully clicking on the location of an existing point will cause the
new line to connect to to that point, so making closed shapes is
easier.
"Drag points" mode allows you to interactively drag individual points
in your object around. If you select this mode, you can click on any
point and drag it to a new location interactively. Any edges or faces
that this point is connected to will follow the point to its new
location.
Dragging multiple points is also easy- just use the shift key,
multi-pick the points by clicking on each in turn, and when you want
to start dragging them, just release the shift key.
AN IMPORTANT TECHNIQUE: What if you want to select a point or points
in one view, and drag them in an orthogonal direction? For example,
you have a plane defined by a horizontal 10 by 10 grid, and you want
to select a bunch of points from the middle and pull them up. If you
click on the points from the top view, you can easily select any of
the points you're interested in, but you can only drag them left and
right, forward and back. You want to be able to drag them UP.
Here's the method for doing this: it is invaluable, so remember it.
Whether you want to move one point or a hundred, press the shift key
to multi-pick the points. Click on the points you want to move in ANY
view, keeping the shift key depressed. To move all of these points,
KEEP THE SHIFT KEY DEPRESSED and move the mouse to the view where you
want to move the points in. Press and hold the left button, then
RELEASE the shift key. The picked points will move with your mouse for
as long as you keep the button held down. Releasing the button will
anchor the points.
In the example with the 10 by 10 horizontal grid, you would press
shift, click on the points you want in the top view, move to the front
(or right) view, release the shift key, move the points up, and
release the mouse button. That's it!
Magnetism, a more complex way of dragging points will be covered in
the "advanced" Detail tutorial.
One problem with manipulating points, edges, and faces is picking the
RIGHT point. When the object is complex, the wireframe displays can
get very cluttered. There is a convenient way of simplifying a view to
get points out of your view- it is a mode called "hide points". In
hide points mode, any points you select (with click, drag box, or
lasso) will disappear from view- they will go away. They still exist,
they just aren't displayed and can't be picked or manipulated. You can
"hide" whatever points that get in the way of your work area, then
change modes, and manipulate the non-hidden parts of your object.
Selecting "pick objects" or "pick groups" will make the hidden points
re-appear.
For example, if you're working on a helicopter model and you want to
work on the rotor alone, you might select "hide points" mode, and use
the lasso to indicate the main helicopter body. The rotor is left
alone, and after changing into drag points or select faces mode, it is
easy to indicate what portion of the rotor you want to deal with
without accidentally modifying the helicopter body. Selecting "pick
objects" mode makes the entire helicopter, with the rotor changes,
reappear.
In theory, you can create any object by adding an axis, then adding
points, edges and faces. In practice, these are very low level
commands; you generally use the more powerful commands like "mold" and
"slice" found in the Object editor. The low level select and add modes
are built to give you the low level control that you sometimes need;
however, they are more for defining basic outlines that are then used
in the more powerful Object commands, or for touching up small details
on nearly complete objects. The next Detail tutorial will talk about
these commands.
-------------------------------------------------------------------------
X. More to come
-------------------------------------------------------------------------
This tutorial describes the important fundamentals of using the Detail
Editor. Remember that most object creation mostly uses the advanced
functions like "mold" and "slice". My next tutorial will deal with
these powerful tools; however, the basics that are described in this
tutorial are very useful and knowing how to move your view and
manipulate objects is virtually essential. I also plan to write a
general tutorial (with examples!) describing object creation; knowing
all the menu commands doesn't give you a sense of the strategies to
follow or steps to take to create a specific model.
Another important discussion in the followup Detail Tutorial will
describe different classes of objects: lone axes, line paths,
outlines, flat objects, and "normal" objects. Expect the second
tutorial around the middle to end of July, 1991.
Whew! Another tutorial whipped out! Actually, this one only covers 2/3
of an Editor, but including everything would really stretch the limits
of a coherent text file. (This one is only 71K!) I am very glad to
have gotten a lot of positive response from my last tutorial on the
Forms Editor; I hope this one (which covers a much more complex
Editor) is equally well received.
If you have any questions, you are welcome to write me or send
e-mail to the Internet Imagine Mailing list, imagine@athena.mit.edu.
Any suggestions or "I want to see this in a tutorial" questions
sent to me personally will be gladly accepted.
-Steve
-------------------------------------------------------------------
Steve Worley spworley@athena.mit.edu
-------------------------------------------------------------------
Steve Worley
290 Massachusetts Ave. (this address soon to change, but mail sent
Cambridge MA 02139 here will eventually make it to me anyway...)
----------------------------------------------
This file and the text therein is Copyright 1991 by Steven P. Worley.
All rights reserved. This file may be distributed freely in computer
or paper form as long as 1) It is unchanged and unedited 2) is
distributed in its entirely 3) gives proper credit to the author,
Steven Worley.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
APPENDIX B: FORMS TUTORIAL (by Steve Worley)
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
This is my long-promised tutorial on the Forms Editor. It is split
into two sections in order to keep mailers from choking. The first
part (which you are reading now) describes how the Forms Editor creates
its objects and what each menu option does. The second file contains
three step-by-step examples that show you how real objects are planned
and built in the Forms Editor.
There is a set of screen grabs and example pictures on hubcap.clemson.edu
in the pub/amiga/incoming/IMAGINE/MISC directory in a file called
Form_Tutorial.lzh. You might want to download this file to help with
the example forms I describe.
I've spent a LOT of time in writing over 40K in text to make this
tutorial and especially the example pictures. Any feedback is GREATLY
appreciated, as it will spur me on to doing a Detail Editor tutorial
sooner.
The Imagine Forms Editor
The creation of objects in Imagine is certainly not as intuitive as
the process you used in kindergarten to squeeze clay into vague animal
shapes. Instead of a real life view of the object, you get a
complex quad-view display. Instead of using your grubby fingers, you
have a very 2-D mouse. Most importantly, if you wanted to change the
shape of a clay model, you just pushed and pulled on it. In Imagine
(and any other computer modeler) you have to use a very specific set
of tools to manipulate your objects. No matter how powerful these
tools are, they are still going to limit the ways you can manipulate
your creation.
This tutorial is a taste of the Forms editor. The editor is VERY
powerful, but not necessary easy to describe. It allows you to create
certain types of detailed object shapes quickly and easily, and is
certainly not limited to the asteroid-like example in the Imagine
manual.
---------------------------------
Part I- What IS the Forms Editor?
---------------------------------
You might have noticed that Forms has in essence NO description in
the Imagine manual. The manual's tutorials do not describe how the Form
Editor works or why you should use it other than "It is very powerful"
and "It can make organic forms easily." I don't blame Rick Rodriguez-
the Forms Editor is difficult to understand and hell to explain even
in person.
It is very hard to describe how the Forms Editor works. It uses a very
strange method of defining it's objects that is difficult to put into
words. You might want to re-read this explanation a few times, since
the Form Editor is much easier to control when you know what it is
doing and how it determines your object's shape.
The Forms Editor defines it's objects as a set of varying radii
cross-sections. You have a great amount of control over both the shape
and size of these cross-sections.
Think of an orange, and the wedge-shape segments that make up the
orange's cross section. If the orange wedge were in the shape of a
square instead of a half-circle, the orange would become a cylinder
instead of a sphere. If you make the square wedges in one direction a
different size than the wedges at 90 degrees to them, the orange
distorts into a squashed cylinder which looks like an oval from the
top.
If you define the wedges to be square in one direction and crescent
shaped the other (90 degree) direction, you will get an orange shaped
like a cross between a cylinder and a sphere- the resulting object is
something like a sphere with two ends sanded to a smoothly
beveled edge.
Another way we might mutate the orange is instead of changing the
shape of the wedges, we can change the radius of each wedge
as we look at them from the top of the orange. If the wedges on the
front side of the orange have a larger radius than the rest of the
wedges (but the same shape), the orange is going to look like it is
ballooning with air pressure with one swollen side.
If the radius of each wedge changes as you go around the orange
(perhaps an alternating big-small-big-small), the orange will take on
a fluted, star-like horizontal cross-section. Any vertical
cross-section will still be circular.
Got that so far? Well, this is exactly what the Form Editor allows you
to do. You can define a the shape of these wedges in both the
front-to-back and left-to-right directions, as well as having
completely independent control over the radial size of these cross
sections.
When you mix these abilities, you can produce an AMAZING number of
complex shapes, especially since each wedge can loop up and down and
form holes and cross over itself. No tree ever made an orange with the
peel intersecting itself, but the Forms editor will gladly create a
shape like this for you. The Forms editor handles all of the details
and bookkeeping, and lets you worry about your form.
The actual mechanics of producing the object are a bit complex, though
straightforward. There are four user-defined cross sections (at 0, 90,
180, and 270 degrees, looking from the top) each with the same number
of points defining it. Every section around the orange comes out at a
certain angle (like 45 degrees) and its cross section is interpolated
from the four pre-defined cross sections (probably linearly, it's hard
to tell). For the 45 degree example, the cross section would be
formed by taking the 0 degree and 90 degree user defined cross sections
and assigning each 45 degree cross section point a position mid-way between
its corresponding location at the 0 degree cross section and its
location at the 90 degree cross section. Thus, the cross section will
smoothly change from one shape to another as you move around the form.
Once the vertical cross section is determined, they are scaled
radially by an amount given by the radius of the user defined
HORIZONTAL cross section (the top view). An area where the horizontal
cross section has a radial bulge will cause the wedge at that point to
stick out a bit more. These bulges can be as severe as you like.
Instead of a bulge, it is easy to make a sharp knife point.
This method of defining objects gives you an amazing amount of
control. The radial control alone is completely flexible, allowing
you to use negative radii, or move the points so that the outside
surface actually reverses itself and backtracks. The vertical cross
section is equally malleable, allowing you to make self-intersecting
walls that are either closed or tube-like. [Or both!]
That's it! The user defined vertical and horizontal cross sections
completely determine the shape of the object. It is very useful to
know how the form is actually constructed- it is not easy to figure
out, and the documentation does not describe the method at all. Once you
understand how Imagine makes the object, you can actually plan how to
build a specific shape.
One great advantage to the Forms Editor is the fact that the form is
continuous- it is made one piece. This means that making smoothly
rounded corners is easy. Organic forms in particular do NOT have sharp
right angles and flat planes in them, and are particularly well suited to
creation in the Forms Editor. Any object created in the Detail Editor
tends to be made of extruded or primitive objects joined together- there
is rarely any smooth transition between the joined segments.
--------------------------------
Part II- Use of the Forms Editor
--------------------------------
The actual creation of these cross-section forms is pretty easy. The
Form editor is particularly fast in it's response, since the tri-view
does not have as many points to update as the view in the Detail Editor.
When you start up the Forms Editor, you have the option of loading in
an old form or starting a new one (By choosing "load" or "new" from the
Object menu). You have a decision when you make a new object on
whether you want an X-Y cross-section or an X-Z cross section. The X-Y
option makes your object like the orange- the segments are all
arranged around the vertical axis. X-Z orients the object on its side,
like a piece of wood on a lathe. (The Form editor can emulate a lathe
very easily, but is much, much more versatile.) Most of the time
you'll want an X-Y cross-section, but everything works similarly for
an X-Z.
You also have a choice on how many points and cross sections to add.
The "# of slices" is NOT the number of orange segments, but the
number of points that defines each orange segment. The "# of points" is
the number of orange slices you have. These labels are defined sort of
backwards, but if you confuse them it is easy to fix. I feel the
default numbers are very large- its easier to start with a simple
version of your form and add points later for detail. It is EXTREMELY
easy to increase (or decrease) the number of points and segments
later, so I usually start with something like 12 points, 8 sections.
Again, this is easy to change later. If you start with many
points, it takes a considerable amount of time just to move each of
the points into your coarse shape before you refine details.
The default start up form is that of a sphere with two small holes in it
at the top and bottom.
The Form Editor does NOT display objects in it's triview like the
stage and detail editors do. It shows the vertical cross sections (the
orange wedge shapes) in the front and right views, the horizontal cross
section (wedge radius as you go around) in the top view. The perspective
view is accurate, and you can select wireframe, solid, or shaded mode
by using the View menu just like you would in the other Editors. I prefer
solid because many forms get very complex very fast, and it is difficult to
see the basic structure in the wireframe mode.
To manipulate a cross section, you just grab a point and move it to
where you want. You can change all FOUR of the vertical cross
sections- if you look in the bottom views, each cross section is a
separate string of points. If you select a point, it's corresponding
points on each of the other cross sections will highlight for
comparison. You can define each cross section completely
independently- the front view will let you manipulate the cross
sections of the orange at 0 degrees and 180 degrees, and the right
view will let you set the 90 and 270 degree cross sections.
Note that the 4 cross sections are not connected at the top and
bottoms. You are free to move the top and bottom away from the center
axis. Moving the points so they lie on top of each other on the Z axis
will cause the object to close at that point. Moving one or more points
away from the axis will cause a hole or entrance to the center of your
object to appear. This allows your object to be open at the top and/or
bottom, so you could have a tube or bowl instead of a sphere.
If two opposing cross sections (like 0 and 180 degrees) touch and the
other two do not, you will end up with an object with an intersection in the
shape of a bow tie. If you do connect any of the points (you can
connect in the middle, too!) you might want to make sure they are
EXACTLY on top of each other and then use the Detail Editor MERGE
command when you're finally done with design. This will decrease the
file size of your form, increase rendering speed, and increase the
ability of the Phong shading.
Most of the time you don't need to control each individual point, and
if you were making a simple object it would be irregular due to slight
differences in the cross-sections. The Form Editor has a very useful
feature called symmetry that will fix this problem. If you turn on
symmetry, whenever you move a point, it's corresponding point(s) will
follow and put themselves in the corresponding position. There are
five options for symmetry:
o None. Every point is completely independent. Default.
o Front. The 0 degree points will follow the 180 degree points
and vice versa. 90 and 270 are completely independent.
o Right. The 90 degree points will follow the 270 degree points
and vice versa. 0 and 180 are completely independent.
o Both. The 90 degree points will follow the 270 degree points
and vice versa. The 0 degree points will follow the 180
degree points and vice versa. Think of it as "oval"
symmetry.
o 90 Every point will follow the corresponding point in every
degree view. Complete radial symmetry.
These symmetry options are very easy to use. Note that turning on
symmetry does not immediately make the cross sections symmetric-
only points you touch and move will change.
Most graceful objects have at least one axis of symmetry, many have
two, and some have 90 degree symmetry. Note that 90 degree symmetry is
actually completely circular. Thus, any swept object (from the Detail
editor) can actually be made by using 90 degree symmetry and keeping
the radius constant (the top view of the horizontal cross-section).
The top view does not have any symmetry controls, and sometimes it
would be nice to be able to keep the points somewhat ordered. One way
around this is to use "lock" from the select menu. Lock will
automatically snap any point you move to the nearest grid location to
where you let it go. This is very useful for making straight lines,
or for creating symmetric cross sections in the top view. You can also
select a bunch of points at once (using the shift key) and use "snap
to grid" in the object menu. This makes each point move to the grid
location closest to it. You can use the drag box or lasso to help
choose what points to select.
Grid size is obviously very important when using lock, since it
determines the grid intersections. I definitely recommend using grid
sizes like 32, 64, and 128. Using 20, 25, 50, 100 certainly seems
reasonable until you start dealing with grids like 6.25 or 3.125. The
power-of-two grids also work well with zooming, since zoom-in and
zoom-out double and halve the screen scale. This is obviously a matter
of choice for each user. Some times when dealing with real blueprints
or measured objects, different scales are much easier to deal with.
There is no question that when you want to build an object in the
Forms Editor, you should start simple and work up. Unlike the Detail
Editor where adding new (non-modular) details is difficult, adding
more polygon resolution is a snap in the Forms Editor.
There are actually three modes to the Form Editor. The default is
"Edit" which allows you to drag points around to define the
cross-sections. However, you can also add new points by selecting
"Add" and clicking on CURRENT points. A new point will be added on the
line connecting the point you clicked on and one of it's neighbors.
You can also position this new point by keeping the mouse button down
and dragging the point to its new location. You can edit these new
points in Edit mode at any later time.
If you add a new radial point (top view) you'll see the point appear
at the next (clockwise) segment. If you add a new vertical cross
section point, you'll see FOUR points appear, one in each of the four
cross section (this is reasonable- the cross sections can't have
different numbers of points!) Deletion is done by selecting delete
mode and clicking on the unwanted points. Again, 4 points will go away
if you select a cross section from the front or right views.
It is so simple to add points that defining a new object with a lot of
starting points is silly. It is VERY difficult to control that many
points, especially in the top view where there you can't use symmetry.
It is easier to start off with about 8 points per vertical cross
section and around 12 radial sections, and arrange these in a coarse
approximation of your object to get general shape and proportions,
then add more points for details. Trying to stretch a cross section
with a lot of points can be a royal pain.
Remember, the plan is to start off with a few points and work up. You'll
often find you don't need as many points as you thought to get a well
defined object. The example projects all use a few points to define the
coarse shape, then add point to make fine details.
------------------
Part III- Examples
------------------
As a final demonstration of how the Form Editor is used, I'll describe
three tutorial objects you can make. You are EXTREMELY advised to sit
down an make these objects. Reading the tutorial is fine, but moving
the mouse around is the best way to learn how to make these sorts of
things yourself.
There are some screen grabs of some key steps in these tutorials in a
file called Form_Tutorial.lzh on hubcap.clemson.edu in the
/pub/amiga/incoming/IMAGINE/MISC directory. These screen grabs show
the step by step evolution of the examples, as well as a couple of
rendered examples. You might want to get these (especially for the
last example) but you're welcome to wing it by using the text alone.
The file also has a copy of this text in it, so you won't have to
separate this mail message out if you're getting it on the mailing list.
If you don't know what FTP is, ask a local computer wizard and hope
you have access. :-)
---------------------------------------------------------------------
A Coke (TM) Can
---------------------------------------------------------------------
The Detail Editor has a powerful tool called sweep that can create
simple radially symmetric objects like a soda can or a candlestick
holder. However, the Forms editor can one-up sweep pretty easily.
Our goal is to create an object in the shape of a standard 12 ounce
soda can with all the details like the hollow on the bottom and the
little metal ridge on the top. The Forms Editor can create objects
like this with no trouble, and do it faster and much easier than using
the Detail Editor to spin a line outline of the can would take.
Enter the Form Editor, and make a new form (in the Object menu) with 4
slices and 20 points. A can at first approximation is just a cylinder.
We need many points around the radius to get a nice smooth circle
cross-section, but only a few slices to define the rectangular
vertical cross-section. For this example, we'll never muck with the
20-point circle cross section.
The cylinder is obviously radially symmetric, so we will probably want
to turn on 90-degree symmetry from the symmetry pull-down menu. The
points that you manipulate in the front and right views will now move
their corresponding siblings, keeping the object radially symmetric.
To make a quick and dirty cylinder, move each point in the vertical
cross sections so that they are on the same Z line- they should stack
vertically on top of each other. I like manipulating the right hand
cross section in the Front view. Remember, the symmetry mode will move
the other three points for you. You can use the perspective view to
see what effect you're having on the form. You might look at the
screen-grab called can_one to see how the first simple model should
look. Again, these screen-grabs have to be downloaded from the FTP
site hubcap.clemson.edu.
What do we get? Well, our horizontal cross section is unchanged, its
still a nice circle. We don't want to muck with it. Our horizontal
cross section is a nice straight vertical line. If you think about it,
this should give us an object in the form of a tube. If you look at
your perspective view and don't see a tube, something is wrong. Look
at the can_one picture again to see what the problem is.
There are two problems with this tube. First, the sides are a bit
wavy, since each point was moved manually and they might not be
exactly on the same vertical line. Second, if we really want to make a
Coke can, we should at least get the proportions and scale right so we
don't have to squash and stretch things later to get it to look
reasonable.
To fix the wavy line problem, we just use "lock" mode from the
select menu. Remember, this will make any point we move jump to grid
intersections, so if we move the points around by the same Z line
they'll all line up on the same grid line.
We should also figure out how to get the right can proportions. If you
get out a ruler, you'll find a standard Coke can is 12.2 cm tall and
the main body is 3.25 cm in radius. It is difficult to accurately
change the radius of our form, but we can make every other measurement
use the default radius of 100 Imagine Units as a reference. Hence,
there are 3.25 cm in 100 Imagine Units, so the can should be 375 units
high. If we change the grid spacing to 25, our can should be fifteen
grids high. It is easy to automatically set the height of our object,
because the points will leap to the right position when we move them
to the correct (coarse) point. You might want to turn on "coordinate"
mode from the display menu to help identify where you are moving your
points.
It might occur to you that we also don't want a tube, we want a solid
cylinder, with ends. This is easy to make, we'll just take the top
cross section point and move it to the Z axis to enclose the top and
move the bottom point to the Z axis to enclose the bottom. This gives
us the rectangular cross-section we need to form a cylinder.
We'll make our can so that the axis is at the very bottom, at 0, 0, 0,
and the can rises to a height of 375 in the Z direction.
To actually change our rough tube to this properly proportioned, capped
cylinder, set the grid size to 25, turn on lock, and move the top
right point in the FRONT view to the 0, 0, 375 grid intersection. The
other views should show the corresponding points moving up as well.
Move the second point to form the outside top edge of the can, to 100,
0, 375. The third point forms the side, at 100, 0, 0, and the last
point will define the bottom, and should go to 0, 0, 0.
Your can should look like the picture can_two.
Ok, this DOES indeed look like a nice cylinder. So how do we get the
nice details like the top rim, and the dent on the bottom, and the
narrower "lip ridge" just below the top rim? I said that it was easy
to add detail once you had a basic, crude form. Let's make the bottom
dent of the can. Turn _off_ lock, so that we can move the points
freely to whatever location we want. We want to add come points to the
vertical cross sections so we have more control over the shape of the
can.
Select 'Add' from the mode menu. Now, whenever you click on a point, a
new point will appear at the midpoint of the line below it. We want to
add a point to the very bottom line segment (Which is currently the
horizontal line making the bottom of the can). Just click on the
bottom outer point and a new point should appear on the bottom
horizontal line. Enter 'Edit' mode from the mode menu, and you'll find
this new point is just as easy to manipulate as the originals.
To form the bottom dent, we want to move the very last point on our Z
centerline UP to make a cavity. The point should be moved about a third
of a cm, or 10 units. You might want to turn on 'coordinates' from the
display menu to help measure the distance. Once you move the point up,
you'll see the dent in the perspective view if you move it so you can
view the bottom of the can. The new point that we added can be moved
up to make the bottom dent more bowl-like instead of a cone.
The trick to adding detail is to identify where you want to add a new
feature. If you want to add a new dent or bulge, a new point added at
the location you want can be moved in or out to make the feature. If
you need to line things up, judicious use of changing the grid size
and using 'lock' will let you place the points accurately. Note that
the Forms editor LACKS the transformation requester that you find in the
Detail Editor, so you can't just type in coordinates for critical
points. You have to use grid size and lock to accurately place
objects.
OK, we know how to add details. Now how do you take the measurements
off of the can? There are a few ways- you could judge by eye, you
could take a ruler and measure everything, or you can try sneaky
tricks. If you fake it by eye, your model is obviously going to be
somewhat inaccurate, even if you use a can sitting right next to you as
a model. Measuring distances works quite well, though. I used a finely
measured rule and a sheet of graph paper to transcribe the shape of all
the ridges and bumps. Inputting these coordinates to Imagine involves
using the Coordinates display and matching points.
However, there is a quick and dirty trick you can use, though this
probably isn't applicable to most objects you model. Zoom the front
view so that it takes up the whole screen. Center your can in your
display by using the "set center" command in the Display menu and
clicking at the center of your object. Now, zoom in or out until the
size of the outline on your monitor approximates the real size of a
Coke can. Take a real can, and press it against your monitor, then
eye it. Use the radius as the determining factor, not the height.
Now repeatedly use the "set zoom" command from the display menu and
muck with the zoom to get the screen can size as close as you can to
the real can size when you press it against the monitor. On my 1950
monitor a zoom of 1.05 worked well, but it will vary from monitor to
monitor.
Once you match sizes, you can actually press the can against the screen
with one hand, and move points to match the can outline with the
other. [You'll look like a fool if anyone else is around, too!]
However silly this seems, I found it the easiest way to input the
shape of the can. When I sat with a ruler and some graph paper, my
paper diagram turned out to be less accurate as the screen method and
took much more time.
A rehash on adding the fine details: You have a rough outline. To
refine it, just pick the area you want to refine, add a new point on
that line, and drag it where you want it. I found that getting a highly
accurate cross-section (using 17 points) took less than 3 minutes with
the admittedly stupid screen trick. Using a ruler I spent 10 minutes
measuring and converting before I even moved the mouse.
When you're done, you should have an outline similar to mine, which is
shown in the picture can_three.
Take a look at your object in the perspective mode with the window zoomed
to full screen, and solid display mode on. Rotate the view up and down.
Nice, huh?
What about the top hole, and the tab? The tab is easy to add in the
Detail Editor, by extruding a flat outline. If you expected to make it
as an integral part of the can form, I'm sorry to say you were
expecting a bit much. The Form Editor likes to make single-piece
objects, and you can see how the tab is really a separate part of the
can "form." This doesn't prevent you from making a separate tab object
and sticking it on, and this is exactly what I did.
The hole, on the other hand, is pretty easy to include using the Form
Editor! If the hole is facing towards us as if we were going to take a
drink, the hole is obviously non-radially symmetric, and it is not
front-back symmetric. It IS left-right symmetric. Turn the symmetry
from the radial '90-degree' to 'right'. Now, in the FRONT view, move
the top point (that is now on the Z axis) straight OUT about a third
of the way to the outer radius. This is the WIDTH of the hole on top.
In the RIGHT view, move the left-top point (which is the front-top on
the can) about 90% of the way to the can rim. Leave the right-top
point where it is. The finished can form can be seen in picture
can_four.
See what we've done? Moving the points away from the center made a
hole. We made the front-to-back cross section asymmetric to one side,
so the hole location is moved. Look in the perspective view. Play
around with moving the hole around and turning symmetry on and off.
Why did this make the asymmetric hole? Remember how the form is
generated? Each cross-section is interpolated from the 4 defined cross
sections. The front cross section blends to the right, which then
blends to the back, then to the left, then back to the front. This is
very hard to describe, but play with the points and you'll see the
kind of control you have.
Note that the hole is an oval, which is not quite true for a can. The
Forms editor really won't let you do much more unless you want to
start mucking with radius modulation, but that's for the next example.
This completed can object can object can be loaded into the Detail
editor, at which point it becomes a normal object. You can move
individual points, apply brush maps, attributes, textures, and
manipulate it in any way you would a normal object. After manipulation
in the Detail Editor, the objects are generally not reloadable back
into the to the Forms editor. Using the Detail editor, you might make
and attach the can tab, or move individual points on the top hole to
make the ellipse to match a real can's hole more accurately.
A final rendered view of a can generated using this tutorial can be
seen in the HAM image 'Craftsman', where you can see two separate
versions of the can. The carved wood Coke logo was an experiment that
turned out well. The Coke logo itself was made with wire cutters, a real
can, Digiview, and an hour's touchup in DPaint III.
The can could have also been generated in the Detail editor by using
the powerful "Sweep" mold function. However, sweep certainly does not
provide the interactive updates that the Forms Editor does, and can
only make completely symmetric objects. The next examples will show
how much more powerful the Form Editor is when it makes very
non-lathed objects.
---------------------------------------------------------------------
Building a Water Splash
---------------------------------------------------------------------
Think of a ball dropping into a pool, and how a corona of water spurts
out around it. The splash is vaguely symmetric, and is certainly not a
group of primitive cylinders and tori merged together.
Building a splash like this using the Forms Editor is obscenely easy,
much easier than the Coke can! It is even simple to animate the
splash!
If we want to make a crude splash model, we should first envision what
a cross section of such a splash would look like. The picture
splash_one is a 10 second DPaint line drawing of how I see water would
splash up and away at the peak of the splash. The center is disturbed
but mostly flat, and there is a steep "wall" of water at at certain
radius pointing out and up. It curls a bit at the top, with a bulge at
the peak, and slopes back IN and down. Outside the wall the water is
less disturbed. The wall is the 'shock wave' and is expanding (and
falling) with time.
It is very, very easy to make a primitive version of this in the forms
editor. We pretty obviously want our main axis that our slices are
centered around to be vertical. Start a new form, with 30 points and
10 slices, which should give us enough detail to rough something out.
Initially, we'll want to make the splash symmetric. Later, we can add
asymmetric details, but for now we want the coarse primitive to be
radially symmetric, since it will define the basic structure of the
form. Use the '90-degree' mode in the Symmetry menu.
The initial spherical horizontal cross section is completely useless
for our purposes. Pick a height at which you want to base the splash
(the bottom point of the cross section is a logical choice) and when
you're building the splash, imagine that it is sitting on top of this
water. It will give us a good reference point.
Pull the top point of the cross section way out and down to the water
level. Keep the bottom point in at the center, and also at the water
level. The inbetween points should be moved into a crude outline of
the sloping water wall that we envisioned. My initial model is shown in
the picture splash_two. It took about a minute to build.
Look at the perspective view. A bit bland, but it is certainly on the
right track. Add a few points to the cross section at the top of the
water wave to give it a more complex, bulging appearance. You might
want to add some points near the base, especially on the inside, and
make the water near the wave a bit more ragged.
Now what? Our coarse form was trivial to make, but is far to
artificial. Let's jazz it up! Turn OFF symmetry, and muck around with
ALL FOUR cross sections. You can increase the height of the wave in
one, make the water a little rougher in another, make the peak on one
a bit more curved... give them character. DON'T make huge changes like
adding a second wave (you're welcome to try!) but certainly make them
a bit different from each other. Think of adding a 25% noise level.
You might keep an eye on the perspective view, as well- it will show
you how the Forms Editor copes with blending these different shapes
together.
Now what? A little more variation? There's no reason the splash has to
be a perfect circle, or even an oval, is there? Of course not. The TOP
display shows what the HORIZONTAL cross section of our splash looks
like. Right now it's a nice circle. Now, our splash really should be
pretty circular when looked from above, but not perfectly... Go ahead
and muck with the shape, and again, watch the perspective view to see
what happens. You might want to leave SOLID mode on, especially with a
fast machine, since the wireframe of such a non-structured object is
often very confusing.
You can move the radial points any way you like. I suggest that you
only move them generally in and out, or the splash will get somewhat
lopsided. Also, avoid having sharp spikes. You can see how easy it is
to make our splash look like the Statue of Liberty's crown. 2 or 3
point bulges look very nice, major details formed with just 1 point are
sharp and look like knives. Not very appropriate for a soft water splash!
My final splash is shown in the picture splash_three. A
rendered version with three different splashes is called Ocean_Sunset.
Ocean_Sunset is actually a still from the current version an anim I'm
working on. It has the dolphins jumping around, the water moving with
wind-driven waves, and eventually will have a ship slowly steaming
along with a nice wake and smoke. The animation of the splashes
still need a lot of tweeking, but it's getting better. This is still a
work in progress, but it looks nice even now.
What about animation? I said it was easy to animate, but how? Well,
let's think of what the animation SHOULD look like, then figure how to
implement it. How does a splash evolve? The big wall of water starts
at the center of the circle and moves outward at a pretty constant
speed. It grows in height, curls over, and crashes down as is
progresses. If we make maybe 4 or 5 splashes, one for each stage of
the splashes growth, we can just move from one to the other. How?
Morph! Morph is easy to forget when you're dealing with complex
objects like splashes. Since morph requires its objects to have the
same structure, different complex objects often won't work with each
other. However, if we use the same basic starting form for each of
the splashes (same # points and slices) we can have Imagine smoothly
interpolate from one form to the next.
Considering the fact that creating the splash took maybe 5 minutes,
you can see that making an entire animated splash is a 15 minute task.
You don't even have to make new splashes, just modify old ones! When
animated, you might add frills like separate objects for flying water
droplets, and have them follow parabolic arcs. The Form Editor won't
let you make detached objects like that, so you'll have to make them
as separate objects that fly out, as opposed to pinch off and fly
away... You might also use two different splash forms superimposed to
give the splash a more complex character. The splash we built is still
a bit plain.
This example should impress how easy it is to make complex shapes with
an amazing amount of speed and control. Asteroid-maker, indeed!
---------------------------------------------------------------------
A Complex Boat Hull
---------------------------------------------------------------------
Making a boat hull might not seem very easy. If we want to use the
Form editor, shouldn't there be some sort of near-radial symmetry? It
turns out that you can really push the Forms Editor around in ways
Impulse hoped we'd discover.
A boat hull is a pretty simple object, right? Well, sorta. If you
wanted to build one in the Detail editor, you'd make an outline the
shape of an iron (as in for pressing clothes), then you'd extrude it
and use slice to make the bottom.
Well, this would work, but it's a pretty cheesy boat hull, no matter
how good your iron outline was. Even if you were a good modeler, made
a series of outlines and used skin to blend them, you are going to get a
hull that is boxy as opposed to a nice graceful curve.
Think of a big ocean-going vessel, not a cheeseball rowboat. The prow
is sharp, to cut into the water, and it angles down and back. The body
of the hull is fairly straight, and the stern rounds off smoothly with
a flat face as opposed to the prow's sharp point. At no point,
however, does the hull look like it was constructed of different
sections. To reduce drag, the shape smoothly changes both from the top
view (a teardrop with a squashed bottom?) and the side view. It has
one axis of symmetry (left/right).
How could we ever model this in the Detail Editor? Not easily, and
certainly not in one piece.
Well, fine. But how could we ever model this in the Forms Editor,
either? It certainly is not very obvious.
A big hint of how we would design a form for the hull lies in where
we place the center, the radial point, of our cross sections. We also
have to decide whether the slices should be coming out horizontally
(like the axis was a vertical mast) or at right angles. The choice is not
obvious.
If the axis is horizontal, then the radial sections would tend to
form a dome over the hull. If you made the radii of the
overhead portion negative (There is no problem doing this!)
we could just make a double-thickness of hull. This is messy, but
workable.
The second option is to use a vertical axis, which gives us the
benefit of a simpler object since there is no "dome" to add extra
needless points. We want to make a new form object with an XY cross
section. Select 3 slices and 7 points and we'll make a very simple
version of the hull and work from there.
The question is where to but the center of our (vertical) axis. There
are three places on the hull where there is a sudden change in
cross-section -- the bow, and the two stern corners. If we want to
make these changes fairly sudden, we probably want to define each one
of them as one of our 4 cross sections. The interpolated cross
sections by definition are interpolated, so there's no major change in
shape. Thus, we want the bow to be in line with one of the four cross
sections, as well as in line with the two stern corners. This makes
our choice easy- the only place we can do this is the very back of the
boat, along the (port-starboard) centerline.
Now that we've decided where to put the axis, how do we want to define
the cross sections? Well, we want something that is left-right
symmetric, and NOT front-back symmetric, so we should turn on
left-right symmetry.
We want to change the default nearly-closed spherical cross section to
something more resembling an open gravy dish. Move the very top point(s)
way out and down some. The front cross section point (the left one in
the Right view) should be moved the most. The back cross section point
should be moved down, but not out very much. Remember that the stern is
very close to the axis, and does not have much detail.
The Front view should look somewhat like a big "U", and the Right view
should look like a sideways stretched "U" with one end (the bow) sloping
back and the other pretty vertical.
The horizontal cross section (top view) should look (reasonably) like
a boat viewed from above. The front should be pointed, the back should
be fairly blunt, but rounding off to the sides.
Describing the shape of these forms is harder than describing a Coke
can. Look at the picture hull_one to see what my crude shape looks like.
You can see in the perspective view that this basic form has a little
hull-like character. It is sharp in front, and has a blunt rear. You can
add extra points to each of the views to make a smoother form with
more details. My final boat hull is shown in picture hull_two. To get an
idea of how complex the real object is, there is a picture of the same
hull shown in the detail editor in picture hull_three.
-----------
The last example is much shorter than the rest, because there is
little more to say about the Forms Editor. What is does is very
complex, but there are few sneaky tricks once you learn how to control
the shape of your objects. The best way to become proficient with the
forms editor is to practice! I challenge you to build a banana. Or a
light bulb WITH threads! [It's quite possible, though annoying]. How
about a good pencil object with six sides?
This wraps up the tutorial on using the Forms Editor. Sometime in the
next month or so I'll be writing a similar (though probably even
longer!) tutorial on the using the Detail Editor and another on the
general process of object design and creation.
-Steve Worley 5/28/91
---------------------------------------------------------------------------
Steven Worley spworley@athena.mit.edu
---------------------------------------------------------------------------
Because I was erked when my brush and texture tutorials were posted on
Compuserve sans credit, I include the following:
The text contained within this document as well as the associated
computer files are (C) Copyright 1991 by Steven P. Worley.
They be distributed freely under the following conditions: 1) The entire
text, including this copyright notice, is kept entire and 2) Steven Worley
is duly credited as being the author. The author reserves all other rights
to this text.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
APPENDIX C: VIDEOTAPE
i) dumping to videotape
ii) comments on dumping to videotape
iii) more comments on dumping to videotape
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
i) VIDEOTAPE- dumping to videotape, by Steve Worley:
Ian Lichter mailed me personally about dumping to videotape. There are three
avenues you can take. If you have a 24 bit display and want to record the
image in its professional glory, you're going to need a single frame video
tape recorder, (about $2500!) and a transport controller to control it. (
I get the feeling these run like $300, but I don't know). I don't know
the details- I don't know anyone who has actually done this.
A second, easier and cheaper solution is to use a product like DCTV, which
animates and outputs direct NTSC which can be plugged right into your
standard VCR. The quality is way lower than 24-bit, but the quality is
also way higher than standard Amiga output.
If you don't have a DCTV, you can dump standard Amiga output to video using
a genlock. This is a device that overlays Amiga graphics on video, but it
can be used to dump JUST the amiga graphics. The Video Toaster will do this,
as well as any genlock. I've never used one, but I've read several good
reviews of the $190 Minigen, and several bad reviews of the $99 Amigen.
What do I use? I havn't had the $$$ for a genlock, so I have a piece of
hardware called an encoder- it just converts Amiga RGB to composite video.
In fact, you might really want to pick one of these up- I have an A520
"RF Modulator for the Amiga 500", which I bought new for $35. It does
a superior job at encoding- as good as any genlock or the Toaster. [A
friend with a Toaster was in a huff until we compared videotapes. Couldn't
tell the difference, both were excellent.] Don't let the name fool
you- the A520 outputs both RF (for direct plug-in to a TV) and
composite (I feed this to my VCR). It also works on any Amiga (I have
a 3000). It plugs into the RGB port, though it does NOT have a
pass-through for a monitor. The A520 is definitely the cheapest way to
go if you just want to dump Amiga animation.
Something to look for is Colorburst, which MIGHT be able to do really
impressive color animation. [Nobody's seen this wonderful stuff yet, so
its still vapor.] It outputs RGB, which would have to be encoded by an
external genlock (or an A520) before being able to be saved on videotape.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ii) VIDEOTAPE- more comments, by Scott Sutherland:
Just to clarify, the DCTV hardware itself does not animate (I am sure
that all of you realize that, but (as they say about winning the Florida
lottery) 'Ya Never Know'!). What it can do is to 'decode' images with the
special DCTV color information in them as they are played back using the
standard RAM animation techniques (ANIMS ;^)). It DOES look really nice.
The HAM-E will do this as well.
On Genlocking devices...
Steve Worley writes:
>I've never used one, but I've read several good
>reviews of the $190 Minigen, and several bad reviews of the $99 Amigen.
I read many articles on genlocking devices for the Amiga, including
some very technical ones which analyzed their output with professional
equipment (way out of my field) including a vector scope, all of which panned
the Amigen. Well, I was using a CMI VI-500RF (now DigiFEX, I think)
encoder, similar to the A520, for dumping my video to tape (it also has a
really nice output and can easily be converted to work with SVHS as well).
I had wanted to play around with genlocking video and graphics, so when I
got a chance to buy a used Amigen for $50, I did it, despite the BAD reviews.
I have played around with it, as mentioned in one of my previous postings,
and the quality is surprisingly good. At least for my HOBBY work. The
colors look nice and bleeding is not too bad. It IS hard to read text (same
for my encoder), but that is to be expected. I understand that where the
poor output of the Amigen will hurt me will be if I do multi-generational
dubbing and/or copying. But by then the VHS quality will not be to great
either. For JUST putting TITLES on videos or simple one-pass video/graphics
interactions, the AMIGEN will work just fine. If you see one used and want
to play around with genlocking (I highly recommend it. It's GREAT FUN and
can really get the creative juices flowing!!!), I recommend it. If you are
doing anything that will be BROADCAST or even dubbed/edited into a final copy
and your final generation will be third or so, the Amigen will probably fail
miserably (my guess is that this is true for the Minigen and Progen as well).
However, when doing this type of editing, you will probably be doing SVHS
anyway, so that might help. BROADCAST quality IS OUT, though.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
iii) VIDEOTAPE- still more comments, by Mark Thompson:
Steve Worley writes:
> If you have a 24 bit display and want to record the
> image in its professional glory, you're going to need a single frame video
> tape recorder, (about $2500!) and a transport controller to control it. (
> I get the feeling these run like $300, but I don't know).
Actually, animation controllers run from about $1500 to $6000. However, the
soon to be released JVC S-VHS VCR will do single frame recording without
one (the first of its kind). It should sell for about $2200. Also, recordable
video disk units do not require a transport controller.
> A second, easier and cheaper solution is to use a product like DCTV, which
> animates and outputs direct NTSC which can be plugged right into your
> standard VCR. The quality is way lower than 24-bit, but the quality is
> also way higher than standard Amiga output.
I was doing this over the weekend. In 3bit mode I got about 15 fps and some
fairly high contouring (banding). In 4bit mode, image quality was much better
(though contouring was still evident) but my frame rate dropped dramatically,
maybe 5 to 7 fps. I was using PageFlipper F/X on a 2500/30 with 640 x 400
images. I might note that these were camera "flybys" through a city scape
at up to 105 miles/hour so there was a good sized delta from image to image.
The 60 frame animation was over 5meg in 4bit mode and about 3.3meg in 3bit.
Anyway, one thing to note about DCTV images converted from 24 bit renderings,
both 3 and 4 bit modes exhibit a fair amount of rainbowing. Any area that
is too "hot" (too much color bandwidth) will show a rainbow of colors. DCTV
includes a filter to reduce this effect (at the cost of sharpness).
> I have an A520 "RF Modulator for the Amiga 500". It does a superior
> job at encoding- as good as any genlock or the Toaster. A friend with
> a Toaster was in a huff until we compared videotapes. Couldn't tell
> the difference, both were excellent.
You will probably not notice much difference on a low quality VHS unit.
But believe me, when viewed with high quality video equipment (D2, U-matic
SP, recordable laser disk, etc.) there is no comparison. In video, one rule
*generally* holds true, "you get what you pay for".
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
APPENDIX D: CENTAUR TAPE:
i) review
ii) second review
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
i) Centaur Tape Comments, by Richard Nollman:
I believe that this IS NOT the tape offered in the Impulse newsletter. I
talked with Steve Worley last night who is in frequent contact with Rick and
asked the same question. He said that as far as he knows it is not. I thin
k Steve said something about it not being finished (not sure about this).
But the best person to ask of course (or second best) is Steve. I am sure
he will post something about this.
I met the guy who did the Centaur Imagine tape. He was stapling the plastic
bags of people going into the Creative Computers booth (large Amiga mail
order house) at the AmigaWorld Expo in NY last weekend so that people would
not steal things. Pretty crude I thought. Anyway, I went to the Centaur
booth to see the tape before I bought it, and their machine was broken.
The person in the booth suggested that I talk to the person who made the
tape, took me over the the bag stapler, and introduced me. I questioned him
for about 10 minutes or so (which was very difficult -- Creative Computers
was very busy and every 10 seconds or so a new crowd of people would need to
be stapled before they entered the booth). Anyway, I described the initial
problems I had with the manuals, the help I received from the Imagine
mailing list, and a friend who spent quite a bit of time working through
the various editors with me. I told him that I was creating simple
animations with spheres moving and camera moving and doing chrome and
reflectivity etc. He said honestly that he felt that at that point I was
beyond the tutorial. It really was designed for people who could not use
the manual to get started. He said that it did not really get into much
depth on setting attributes and things at that level. So fortunately I did
not spend the money. I met a poor soul who had some very nice Imagine
renderings that were being displayed at the Black Belt booth who had bought
the tape (very excited about it). We had a great discussion about Imagine
and ray-tracing. He seemed very advanced. I am sure he was pissed when he
played the tape...I hope he can get his money back...
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ii) Second Review of Centaur Tape, by Mark D. Manes:
Warning Will Robinson... Danger, Warning!
Folks, I recently checked out the new Imagine video tape from Centaur
Software... in a word, I think it, well, sucked.
I hate to use words that strong, but the narration was terrible. I
felt as though I was hearing stream of thought rather than a nice
presentation of the Imagine program. Further after watching the
nearly 90 minute tutorial (yawn) the creation that I suffered
90 minutes to see was ugly to bone.
The tutorial seems to be disjointed and does not explore the
detail editor with any depth. Further it breezes through the
description of adding faces to an object without ever really
showing you how to do it. I about died when I watched the section
on the attributes requestor, the tape said things like the filter
gadget adjusts the filter settings! Great, I could not have
guessed that. :-)
I _have_ created many interesting pictures just from following the
tutorials in the Imagine manual! This tape would be great if
they had simply recreated the tutorials that are in the manual,
instead of taking me on a disjointed chaotic trip through Imagine.
This tape should be avoided at all costs.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
APPENDIX E: SURFACE MASTER
i) Advertisement
ii) Review 1
iii) Review 2
iv) Additional Details
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
i) (I uploaded this from People/Link a couple of days ago - Mark Davis.)
Introducing "Surface Master" for IMAGINE by Louis Markoya. A
comprehensive collection of Attribute and Texture settings which
allows you to master your renderings and achieve professional results.
The Surface Master package comes with a detailed manual explaining
all Attribute and Texture parameters, effects and how to animate
those effects plus hints and tips on special applications. A disk
containing IFF pictures illustrates each Attribute and Texture
setting. All objects and many attribute files are included.
Attributes for many surface qualities like Chrome, Glass, Gold,
Brass, Diamond, Emerald, etc., are included and explained. Proper Index's of
Refraction and custom settings are used for the best results in
different Global situations. In addition to these, many other preset
examples explore the realm of possibilities within IMAGINE.
Texture variables will be explained as well, with a wide array of each
Texture's possibilities presented. For Example, Wood, has a matrix of
settings to explore all of its parameters, and seperate settings for
Pine, Oak, Zebrawood etc.. Pictures illustrate the wide array of all
effects possible. The actual objects rendered are included. Settings
and the discussion of their variation are covered in the manual.
Textures can be animated and hints for the best settings are offered.
The effects of moving the axis and the interaction of object size to
Texture settings are explained.
Surface Master is of great value to both the novice and pro,
eliminating the struggle to achieve those special results.
Those knowledgeable of his work are fully aware of
his abilities, especially in Turbo Silver and IMAGINE. Now he shares
many of his "secrets". The Surface Master package is available for
$30.00 only through direct mail from Louis.
Send Bank Check or Money Order to;*
Surface Master
Computer Imagery
49 Walnut Ave.
Shelton, CT 06484
Make checks payable to Louis Markoya
* Personal checks accepted, but shipment will be delayed for check
clearance.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ii) Review of Surface Master, by Richard Nollman:
I received my copy of Surface Master on Monday and within minutes it paid for
itself in time saved and frustration avoided. Unless you are a master Turbo
and/or Imagine user, this program will save you hours (days, months, years?)
of experimentation.
For those of you who might not have read the initial advertisement
posted last week, Surface Master is described as "a comprehensive
collection of Attribute and Texture settings which allows you to
master your renderings and achieve professional results." The
software makes good on the promise.
I am a novice 3D modeling, Imagine, and Amiga user (bought my 3000 at
the end of October). Within ten minutes I created an animation with a
gorgeous wood grain chesspiece and four reflective spheres with
varying reflection values on a blue highly reflective plane. I have
been concentrating my time on just learning how to set the basic
attributes (to do things like glass, chrome, etc). I thought that
things like texture mapping would have to wait. Well, I loaded up
Surface Master, wrote down the values for the wood texture of a
Surface Master object (textures, unlike attributes, cannot be loaded
directly because they are not saved in the same way) and applied these
values to my chesspiece. I was astounded at the quality of the
rendered image.
The first thing that struck me was the prompt arrival of the software.
I sent in a money order last week and received my copy on Monday.
The software has a simple program that consists of two levels of
menus. The first contains a matrix of windows with attributes and
textures that correspond to the ones found in the Imagine Attribute
requestor. Click on an attribute or texture and next level menu
appears with 4 sets of 4 objects (spheres or cubes) rendered with
various settings for that attribute or texture. Sometimes a window
will have several attributes described. Each object has a value
assigned to it (R,G,and B values or a single value) that
you can write down on paper. In most cases you do not have to; the
objects that appear in the Surface Master menus come in Surface Master
directories. When you are working in Imagine, simply load in the
object or the attribute from the Surface Master directory. Markoya
used them to create the Menu screens. To get the texture values, load
in the objects with the texture values you want, invoke the Attribute
requestor for the object, choose texture, and write down the values.
Just one texture, wood, is worth the price of the package. Surface
Master includes 16 different samples of wood grain combined with
linear, random and radiance(?). In addition, there are 16 samples of
different types of wood (mahogony, ash, pine, oak, zebrawood, etc.).
In a few minutes, without having to puzzle over Imagine
documentation (which usually ends up providing little or no help), I
understood how to use the linear texture to create my wooden chesspiece.
For the color attribute, Surface Master includes a color wheel of
spheres. Load these spheres individually as objects to your
rendering project or the attributes associated with them. Very
helpful in getting just the right color for an object without having
to diddle around (or at least get a close approximation).
Color and wood are only a few examples.
Finally, the documentation. The manual is very small, but clearly and
thoroughly presented. Each attribute and texture is described in
detail. Impulse could learn alot about documentation from this
manual. It packed so much information in such a small space that I
need to go back and read it several times to really get the meat of it
(mostly I was just eager to try out the software). From many it will
probably become a standard text on Imagine attributes and textures.
And all for just $30. Amazing...
My hats off to Louis Markoya. I hope that he is going to continue to enhance
Surface Master. I would love to see a disk of objects and other attributes.
Maybe an entire disk concentrating on reflection or chrome. If he has more
Imagine-related software coming out, put me on the top of the list.
I do have one complaint. It comes with what appears to be a projector
program. But it is not documented and I cannot figure out how it works.
If anyone knows how to contact Louis, please pass this on.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
iii) Review of Surface Master, by Harv Laser:
To explain this a little further, Surface Master is made up of a full
disk of some different parts:
-There's a Projector (tm Right Answers Grouop) sequence of screen shots
showing all the various attributes and textures available on the disk,
such as a screen full of wood spheres of different kinds of woods. I don't
remember offhand how many screen shots but at least a dozen.
-There's a directory full of objects from which all those screen shots
were made. Say you wanted to use Zebra wood on one of your objects in a
rendering. You'd load the zebra wood object (which you could see in the
slide show) into Imagne, select it and then select the attributes
requester, jot down the wood settings, then select your own object and
punch in those same settings to get that same wood.
-There's a directory full of attribute settings for which you do not need
to load in Louis' objects nor copy down any settings. These attributes
can be loaded directly into the attribute requester and applied directly
to your own object - without interfacing at all with the "textures" that
come with Imagine. Stainless Steel, Chrome, Emerald, Diamond, etc. would
be examples of attributes which can be loaded in right from disk without
textures, whereas Woods, Dots, Grids, Checks and other texture effects
require the extra step of loading in Louis' object and copying down and
then re-entering the textures for your own objects.
The beauty of this disk is that Louis has done all the hard work. You
don't have to sit there trying to figure out how to make something look
like chrome or like ivory. All the settings are on the disk in one of
the two forms described above along with pictures of them all.
So it's a lot more than just a disk full of pretty pictures or numbers
painted on the screen.
disclaimer: Louis Markoya is a friend of mine and he's marketing this
product on his own and I just want people to know that it exists. I
get no "cut" from the money he makes from it.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
iv) Details, from Richard Nollman:
In response to a request to post the attributes and textures covered in the
Surface Master software, I post the following:
Spheres and cubes are rendered in color on menu screens (very nice)
with libraries of objects, attributes and textures included in the
package. Each of the following categories displayed on a submenu screen:
Reflect/Filter 4 x 4 matrix of spheres with RGB and intensity values
Dithering/Roughness 2 x 4 matrix of spheres with intensity values (50-225)
Specular/Hardness 2 x 4 matrix of spheres with intensity values (50-225)
Color 49 colored spheres in a color wheel;9 spheres in grayscale
Shininess 3 x 4 matrix of spheres with shininess, filter, and index of
refraction values
Index of Refraction 3 x 3 matrix of spheres with intensity values (1-3.4)
Linear/Radial (textures) 4 x 3 matrix of spheres with transition width
and reflect/filter RGB values
Checks/Angular (textures) 4 x 3 matrix of spheres with angular, checksize,
and reflect/filter RGB values
Grid/Dots (textures) 4 x 4 matrix of cubes with gridsize, reflect/filter
RGB, and dot spacing values
Bricks (texture) 4 x 4 matrix of cubes with XYZ shift, Y shift with Z value,
Z shift with Y value, and reflect/filter RGB values.
Disturbed (texture) 4 x 4 matrix of spheres with amount, wavelength, X
separation, and small values
Wood (texture) 4 x 4 matrix of spheres with ring spacing, exponent,
variation and random seed values
Preset Materials 4 jewels (diamond, ruby, saphire, and emerald) and 12
spheres (glass, crystal, water, quartz, steel, pewter,
plastic, ivory, chrome, gold, brass, and copper)
Woods 12 spheres with the following types of wood: birch, mahogany, cherry
oak, pine, red cedar, zebra wood, red mahogany, black walnut, ash
walnut and tulip (? - can't read my own writing)
Combos 16 cube assortment demonstrating mixed textures including:
wood/grid, grid/wood, linear/disturb, bricks/linear, bricks/wood,
and bricks/linear
That's the list. Have fun with it (I sure am). Just want to mention that I
do not even know Louis Markoya so I am just posting this as a satisfied
customer.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
APPENDIX F: TTDDD (an excellent shareware package).
i) getting coordinates with TTDDD.
ii) making threads.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
i) Coordinates, by Glenn Lewis:
Doug> First and foremost.... how can one get the coordinates out of
Doug> Imagine for the points without going to each one and writing down
Doug> the coordinates?
Piece of cake. Get TTDDD.zoo from ab20.larc.nasa.gov (I think
it is in the incoming/amiga directory).
Type: "ReadTDDD Enterprise.object > Enterprise.ttddd"
Now take a look at "Enterprise.ttddd", and it's got all the
information you need, I believe. Scott mentions some commercial package
that does the same thing. TTDDD, like Scott's, works on Turbo Silver
objects, but it can read Imagine objects, and will simply skip the IFF
"chunks" that it doesn't understand (and will tell you what ones they
are). Whenever I get the Imagine IFF format specification, I plan on
upgrading the TTDDD package.
Disclaimer: TTDDD is ShareWare, written by myself.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ii) THREADS, by Glenn Lewis:
>>>>> On Mon, 25 Mar 91 20:58:40 EST, spworley@ATHENA.MIT.EDU said:
Steve> Anyone have any good ideas on how to make threads, like on a
Steve> bolt?
Sure. Piece of cake. In the last twenty minutes, I cooked up a
little Perl script that creates a threaded object whose parameters I can
control. I used, of course, WriteTDDD. In fact, here is what I typed:
thread 60 0.5 10 4 5 | WriteTDDD > thread.tddd
Here is the Usage information:
Usage: thread NUMPTS SPACING HEIGHT IN_RADIUS OUT_RADIUS
where NUMPTS is the number of point in a single revolution
SPACING is the number of units between threads
HEIGHT is the total height of the bolt.
IN_RADIUS is the radius of the inner thread.
OUT_RADIUS is the radius of the outer thread.
Does this sound like something you would want, Steve?
Unfortunately, I don't have my Amiga with me right here, so I
can not see if it looks like what you want. So I'll send you the
object, Steve, and let you take a look at it.
Nevertheless, here is the Perl script that I used to create it.
If anybody doesn't know what TTDDD is, you can grab it off of
ab20.larc.nasa.gov and it will give you more information. It stands for
"Textual Three Dimension Data Description", and was written by me.
Have fun.
-- Glenn Lewis
********************************************************************************
#!/usr/local/mcfg/bin/perl
if ($#ARGV < 4) {
print STDERR "Usage: $0 NUMPTS SPACING HEIGHT IN_RADIUS OUT_RADIUS\n";
print STDERR "where NUMPTS is the number of point in a single revolution\n";
print STDERR " SPACING is the number of units between threads\n";
print STDERR " HEIGHT is the total height of the bolt.\n";
print STDERR " IN_RADIUS is the radius of the inner thread.\n";
print STDERR " OUT_RADIUS is the radius of the outer thread.\n";
exit(0);
}
print
"/* thread.ttddd - Written by Glenn M. Lewis - 3/26/91\
* Steve Worley had asked on the Imagine mailing list how to create\
* a thread-like object for Imagine. Instead of saying 'how about\
* using TTDDD to create it, I thought... I'll see if I can create\
* a thread using TTDDD. Since my Amiga isn't handy, I'll let somebody\
* else pump this through WriteTDDD to get an object and check it out.\
*/\
\
OBJ Begin\
DESC Begin\
NAME \"Thread\"\
SHAP Shape 2\
SHAP Lamp 0\
";
# OK. Start calculating the position of the points, edges, and faces...
$NUMPTS = $ARGV[0];
$SPACING = $ARGV[1];
$HEIGHT = $ARGV[2];
$IN_RADIUS = $ARGV[3];
$OUT_RADIUS = $ARGV[4];
$PI=3.14159265;
#
# Calculate the points needed...
#
$height = 0.0;
$heightstep = $SPACING/$NUMPTS;
$theta = 0.0;
$thetastep = $PI/$NUMPTS;
$count = 0;
while ($height < $HEIGHT) {
$outer_x[$count] = sin($theta) * $OUT_RADIUS;
$outer_y[$count] = cos($theta) * $OUT_RADIUS;
$outer_z[$count] = $height;
$theta += $thetastep;
$inner_x[$count] = sin($theta) * $IN_RADIUS;
$inner_y[$count] = cos($theta) * $IN_RADIUS;
$inner_z[$count] = $height;
$theta += $thetastep;
$count++;
$height += $heightstep;
}
#
# Start writing the TTDDD data...
#
# First, list the points...
#
printf(" PNTS Pcount %d\n", $count*2);
$edge = 0;
for ($i=0; $i<$count; $i++) {
printf(" PNTS Point %d %g %g %g\n", $i*2,
$outer_x[$i], $outer_y[$i], $outer_z[$i]);
printf(" PNTS Point %d %g %g %g\n", $i*2+1,
$inner_x[$i], $inner_y[$i], $inner_z[$i]);
# Count up the number of edges we need
if ($i<$count-1) {
$edge += 3; # O[i]..O[i+1]..I[i]..O[i]
if ($i>=$NUMPTS) { $edge += 3; } # I[i]..I[i+1]..O[i-N]..I[i]
if ($i+1<$count) { $edge += 3; } # O[i+1]..I[i+1]..I[i]..O[i+1]
if ($i>=$NUMPTS) { $edge += 3; } # I[i+1]..O[i+1-N]..O[i-N]..I[i+1]
}
}
#
# Second, list the edges...
#
printf("\n EDGE ECount %d\n", $edge);
$e=0;
$face = 0;
for ($i=0; $i<$count-1; $i++) {
printf(" EDGE Edge %d %d %d\n", $e++, $i*2, ($i+1)*2);
printf(" EDGE Edge %d %d %d\n", $e++, ($i+1)*2, $i*2+1);
printf(" EDGE Edge %d %d %d\n", $e++, $i*2+1, $i*2);
$face++;
if ($i>=$NUMPTS) {
printf(" EDGE Edge %d %d %d\n", $e++, $i*2+1, ($i+1)*2+1);
printf(" EDGE Edge %d %d %d\n", $e++, ($i+1)*2+1, ($i-$NUMPTS)*2);
printf(" EDGE Edge %d %d %d\n", $e++, ($i-$NUMPTS)*2, $i*2+1);
$face++;
}
if ($i+1<$count) {
printf(" EDGE Edge %d %d %d\n", $e++, ($i+1)*2, ($i+1)*2+1);
printf(" EDGE Edge %d %d %d\n", $e++, ($i+1)*2+1, $i*2+1);
printf(" EDGE Edge %d %d %d\n", $e++, $i*2+1, ($i+1)*2);
$face++;
}
if ($i>=$NUMPTS) {
printf(" EDGE Edge %d %d %d\n", $e++, ($i+1)*2+1, ($i+1-$NUMPTS)*2);
printf(" EDGE Edge %d %d %d\n",$e++,($i+1-$NUMPTS)*2,($i-$NUMPTS)*2);
printf(" EDGE Edge %d %d %d\n", $e++, ($i-$NUMPTS)*2, ($i+1)*2+1);
$face++;
}
}
#
# Third, list the faces...
#
printf("\n FACE Tcount %d\n", $face);
$e=0;
$f=0;
for ($i=0; $i<$count-1; $i++) {
printf(" FACE Connect %d %d %d %d\n", $f++, $e++, $e++, $e++);
if ($i>=$NUMPTS) {
printf(" FACE Connect %d %d %d %d\n", $f++, $e++, $e++, $e++);
}
if ($i+1<$count) {
printf(" FACE Connect %d %d %d %d\n", $f++, $e++, $e++, $e++);
}
if ($i>=$NUMPTS) {
printf(" FACE Connect %d %d %d %d\n", $f++, $e++, $e++, $e++);
}
}
#
# Now wrap up the object description...
#
print "\nEnd DESC\nTOBJ\nEnd OBJ\n";
exit(0);
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
APPENDIX G: WAY COOL PROJECTS
i) extruding picture
ii) rolling sphere
iii) 3-D font
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
i) Way cool project 1, by Steve Worley:
This was way-cool! Try it.
Get an object. A sphere will do, but whatever you want.
FLAT map a brush onto it. Make sure the brush Y axis is bigger than the
object, make sure the object just fits in the positive x positive z quadrant.
Go to "transform axis" in the brush requestor, select "size", then write down
the x & z scalings.
Make a plane. Map the same brush on it. Use transform to get the same size.
make sure the plane's size is at least as large as the brush.
Go to the stage editor.
Put the object DIRECTLY behind the plane. Orientation and position are
critical- you want the brush maps to line up. [They're the same size.].
Put the camera on a 45 degree view so you don't have a dead on shot.
Make a path that moves the object straight THROUGH the plane, for about 20
frames.
Animate it!
Here's what you'll see. You'll see a flat picture slowly take on a three-d
form, "extruding" exself into a third dimension. The join between plane
and object is indetectable because the brush maps are identical.
This effect is REALLY cool, though you have to be careful to line everything
up right. Use "transform" to set position and orientation of the
objects and their maps exactly if you're having trouble.
You can render this in scanline- it doesn't need trace.
You could make a room with a framed picture (I have a REALLY nice picture
frame) with a picture of something on it. Camera moves to an oblique view,
zooms in a little, picture starts "extruding." Maybe out a little, then back,
then out then back, then finally, the object finally makes it all the way
out (and the picture behind has a new brush map without the object!). Then
the released thing (whatever!) could explore the "Real World". An idea. Run
with it if you like, post how it goes.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ii) Way cool project two, by Steve Worley:
I've been working on an animation that seems to be coming out
very nicely- there's a couple of techniques dealing with brushes
that people might find very useful.
I created a still first. It started as a "mirrored balls on a checkerboard"
setup, with the centerpiece being a big, black, glossy sphere with
a picture of me "trapped" inside the sphere. Later I turned it into
an animation with the camera moving about so that you could see the
different sides. It looked cool- the real goal was to see how well
a "traditional" mirror & glass sphere populated plain would look.
It turned out so well that I changed the animation to a still camera
and having the ball roll around the scene, in front of mirror-balls
and in back of glass balls to see the neat effects. [Remember the
long transparency essay I wrote? I was tweaking the crystal spheres
for this anim.] Making the ball roll was a trick. How do you get
something to roll (at the right speed!) while following a path? Getting
it to spin (like a plane doing a barrel roll) is easy- you align to
path, then set Y rotation to be from 0 to 360 and it will do a complete
spin. This is not in the right direction for a rolling ball, though.
[Annoying feature- you can't say from 0 to 720 for two spins,
or 0 to 3600 for ten.] To get it to roll I created a second path, which
was basically a larger copy of the first, so the first path was
just inside of the second path. I had an axis (a track) follow this
new, outside path, then used "align to object" to make the sphere point
to the axis. Thus, as the ball moved along its path, one end (the positive
Y axis direction) was always pointed at right angles to the direction
of motion. Is this clear? Now using the "initial Y angle" and "final Y
angle" I set them to 0 and 360 and it rotated as it rolled. As a special
effect, I raised the "track path" a little in the Z direction so the
sphere looks a little bit like a top rolling around, since the spin
axis was not horizontal anymore.
An alternative would be to make a cycle object, rolling around the X axis.
This is equally valid, but I did it this way first.
The picture of me on the sphere was pretty easy. I used Digi-View
to take a picture of me with a scared/concerned expression and
my hands palm forward outstretched a little. I stood in front of a
clean, white background. I saved the pic as an IFF24 picture from Digi-
View, and used The Art Department to balance it. Digi-view's balancing
controls are fine- TAD has a couple of nice features, though, like
scaling and especially gamma correction, which increases contrast by
expanding color scales. (I'll explain if someone wants me to.) I saved
the pic as a 900x600 16 color IFF, then loaded it into Deluxe Paint III.
Deluxe Paint is a wonderful program, and has no objection to loading large
IFFs. I touched up a couple scanning artifacts with the smooth and blend
tools, then removed the background. To do this, I first used the filled
rectangle tool to fill in the big, easy to clear spots of background
(a wall in my case). I then used the stencil (frisket to you Disney
folks) to let only the brightest few whites be changable. A pass or two with
a big brush along the edge of my body, and woosh- the background was gone.
I then added a new background ( a grid of white lines) by picking my body
up as a brush and stamping it on a grid I made on the spare page. I saved
the picture, and I was done!
Imagine does not care what size the picture it maps is- they all get
normalized to the brush-axis dimension. Thus, my LARGE picture was of
significantly better quality than just a screenful. Optimally, if I had a
24 bit paint program, like the Firecracker paint program, Colorburst's
paint program, or Toasterpaint, this would have given the highest quality
output. Anyone want to give me a Colorburst?
Wrapping is an art, and everyone should read Mike Halvorson's brush-wrapping
posted about 2 weeks ago. Its pretty good, though he mis-describes Y axis
functionality in wrap-wraps, but not in flat-flats (though maybe I'm wrong).
Luckily, wrapping spheres is a snap- you can't screw up as long as your
brush's Y axis is smaller than the radius, and the axis is centered.
Complex shapes are much more difficult, and best described in another post
sometime. [Like after I can do them consistantly!]
Anyway, the result mapped onto the sphere looks real cool. The grid wraps
around the sphere like longitude/latitude lines, and I was smart and made
my grid match up from one side to the other. This made the join on the back
of the sphere look UTTERLY undetectable, so it isn't obvious this is a flat
object wrapped onto a curve.
I rendered this 80 frame anim over about 6 days, (hires raytrace) and
it was beautiful! The glass in particular looked sleek. I then wanted to
spiff it up even more, so I added a glass arch (half a stretched torus) for
the prison-sphere to roll though, and I animated myself on the sphere.
How did I animate myself on the sphere?? This is a VERY useful trick, and
I learned it long before I had Imagine, when I was into DPaint anims. What I
did was I took a camera and VIDEOTAPED myself kinda waving my hands around
like a mime (the invisible wall in front of me, palms outward)
with the concerned/scared look on my face. After a few takes, I thought I had
the right feel, so I booted my 3000 [well, sat down in front of it- its
always on!] and started Digiview.
Time out: IMPORTANT! Digiview DOES work on a 3000- you must use 'CPU
nocache noburst' before you start Digiview, or it will die! I almost sold
my DV until I said "hmm. I'll try one more time. What if I .." and it worked.
Anyway, I played the tape and freeze-framed on the start of the part I liked.
YOU CAN'T USE A CHEESY 2-HEAD VCR! You need good stills.I digitized a frame,
then spent a good 10 minutes perfecting the balances. [I didn't use TAD
because it would have been a pain saving all the frames (1/2 meg each!) and
loading/balancing/saving them again. ADPro has an AREXX interface, and so
does Digi-view. This would have been an IDEAL application of AREXX!] Once I
had the balance perfected, I re-digitized, balanced, and saved the picture as
'steve001'. The 001 is important- if you save it as 'steve1' it will be
a bit harder to load into DPAINT. [You'll see!] I then forwarded 3 frames,
and digitized, and saved as 'steve002'. I did this for 40 frames. Yes, its
mind-numbing, but really only takes half an hour, and you can be listening
to tunes or talking on the phone or whatever.
Finally, I started DPaint, and blessed my extra RAM. I went into 'load
picture', selected file 'steve001' and at the bottom of the name requester,
entered '40 frames'. Dpaint then loaded the next 40 frames (alphabetically)
as an anim. See why we have steve001? It loads steve001 to steve0040
correctly. If I used 'steve1' the order would be steve1,steve10, steve11,
... steve19, steve2, steve20 and so on.
OK, I have an anim. I play it, and voila! There I am, looking like a person
acting like he's trapped in a sphere! :-) The quality of this method is
SURPRISINGLY good. Try it- even if you don't use Imagine. It's lots of fun!
320 by 400 animates faster if you're not doing it for Imagine, but just
want to muck around. [well worth it!] Here's an idea- tape yourself throwing
and catching a volleyball, then digitize your best friend. Remove his or her
head as a brush, then paste a copy of the head on top of the ball in every
frame of your anim. Voila! Macabre juggling! Works really well if they're
smiling.
Back to the Imagine anim. I digitized in hi-res for quality- it doesn't
animate as well in DPaint (more bandwith -> slower anims) but for our
purposes this makes no difference at all. I cleaned out the background
for all the frames by using "anim-painting"- holding down the left-amiga
as you paint. [3000 owners, you might have to change the WB prefs- this
is the default way to drag screens] By using big brushes for the easy stuff,
then stencils, a smaller brush, and a much slower pace for the edges near my
body, I removed the background from all the frames.
I picked up my body as an animbrush, then anim-painted onto a 40 frame anim
of a stationary grid. I then used "save picture" [NOT anim!] and saved 40
frames as stevebg.. DPaint is smart, and makes stevebg001, stevebg002,... and
so on.
Now what? To Imagine! I call up my project, which currently has a static
brush on the sphere. If I were starting from scratch, I would render the
anim in HAM scanline to insure the pacement of the brush and feel of the
anim. Once you animate the brush, it is not a trivial matter to change its
position on the object you're wrapping.
However, I have already done a static test. I know that my brush is in a
good position- I'm upright and centered just as I pass the camera- a good
shot. I then went into the detail editor and loaded sphere.iob [my
_I_magine _OB_ject] and entered the attributes selector, and select the
brush map already there. I changed the picture filename in the gadget to
say 'stevebg.001' and exited and saved the object as sphere001.iob. I then
went back to the brush name, changed it to 'stevebg002' and saved the sphere
as sphere002.iob. Note there is no need to RELOAD the sphere- I just save
it. This goes by VERY fast once you get started, and I had 40 objects in 5
minutes. Also, every sphere has the same attributes and same brush position,
etc. The only thing to change is the name of the brushmap.
To the stage editor! I already had my rolling sphere set up- remember, I
did a static version before that looked good. I deleted the "actor" that was
my sphere, keeping the position and alignment that were already there.
I then added a new actor from frame 1 to frame 1 called sphere001.iob.
I then added a new actor from frame 2 to frame 2 called sphere002.iob.
I then added a new actor from frame 3 to frame 3 called sphere003.iob.
I then added a new actor from frame 4 to frame 4 called sphere004.iob.
.....
I then added a new actor from frame 40 to frame 40 called sphere040.iob.
I then added a new actor from frame 41 to frame 41 called sphere041.iob.
....
and so on. My anim was such that my repetitive motion made a pretty clean
transition from beginning to end [in DPaint] so repeating it looked all
right. If not, ping-ponging would have worked [instead of 1 2 3 4 1 2 3 4
1 ... it goes 1 2 3 4 4 3 2 1 1 2 ...] Also, I made sure the best views
(by the camera) didn't have a transition, anyway. Entering the 80 objects
again is boring, but the file requestor is fast enough (and has last file
defaults!) so it only took 10 minutes. Alternatively, it might have been
neat to see what morphs would do- this would fade out one frame while
bringing in the next (I think) and might be worth trying sometime. This
would be done by changing the object every other frame (or even less often)
and setting the # of transition frames to 1 or more.
Well, thats it! The ray-traced anim is rendering now- the scanline version
showed me waving around just fine, and it really looked smooth! I thought
that people might like to try this technique- its roundabout, but the
results are worth it!
A note- Animation Journeyman (another renderer) supports animbrushes... must
be nice, though I haven't seen it.
If anyone wants me to clarify anything I'll be happy to. This little
essay has grown a bit in length... :-) I won't be able to post the final
anim, its HUGE!, as is the project itself (40 pictures, > 40 objects..)
though I might put a still or two on ab20 if people want me to.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
iii) 3-D FONT, by Steve Worley:
I was mucking around trying to make a new "Imagine" picture for the startup
sequence, and thought it might be neat to ray-trace a nice version.
The question is what is the best way to get nice 3D fonts? Well, you get
a nice big font (I used my Pro-Page Helvetica-Bold at about 80 pixels high)
and save the word(s) as a picture, then convert this to an outline in
the Detail editor and extrude. You can auto-face using "slice", being careful
to only slice 2 or 3 letters at once to keep an Imagine bug at bay. [It will
hang if you have too many letters. It's not the number of points- perhaps
too many pieces. Anyway, a bug.
This gives you a nice 3D font.
Well, not really. It gives you a 3D font, but to be honest, its kinda boring.
Its just flat letters with depth. Ugh.
Wouldn't some neat color or chiseled edges or something help?
"Yes!" I said to myself. Beveled edges all the way around would look
way-cool! OK, lessee, I can put a smaller copy of each letter on top of
itself, um, no, I could drag the points on the outline in, um, no, argh!!!
It is VERY difficult! I couldn't come up with a good way to do it. Remember,
you don't want a letter becoming smaller as it reaches the surface of the
letter, you want it to become THINNER. A smaller copy on top would make
a cone-like effect. Not what I'm looking for.
Finally, I came up with a method that worked really well. First, go into
DPaint and pick up your word or whatever as a brush. Then use shift-O to
THIN the brush. I thinned three times- you might do more with a bigger
font, less with a smaller font. An font less than about 50 pixels high
is gonna die.
I then saved the picture with "IMAGINE" stamped on it twice- thick and thin.
I loaded it into Imagine and converted to an outline.
Now, I wanted to make a surface that went from the big outline to the thinner
one. An ideal job for skin, right? Yes!
Well, almost. Skin requires both objects to have the same number of points.
(What would it do with the extras on one or the other?) The thinned letters
were considerably more complex than their thick versions. [The curves were
tighter, and right angles were rounded.]
What I did was copy the thick font's outline, and superimposed it onto the
thin version. Then I used "drag points" on each letter to make the big font
look just like the thinned one. I also used my judgement in what looked good-
the thinned font was a guide, not an absolute.
When I was done, I deleted my original thin letters. I was left with
"IMAGINE" in normal letters, and "IMAGINE" with thin letters. Both versions
had the same number of points.
The letters should have some depth, so I copied the thick version again,
and extruded it into a tube.
To make the chiseled faces, I placed the thin version directly on top
of the un-extruded version, then raised it up a little bit in the
direction towards me. Then I picked them both and skinned.
Putting a front face on the letters was pretty easy. I just used the
slice method shown in the tutorial manual. Messy, but it works. I used a HUGE
triangle (primitive plane, one corner deleted) placed over the IMAG
letters at a depth JUST under the thin letters, and sliced. I deleted
the crufty leftovers (the outside triangle bits, the VERY small parts
chopped from the skinned chisel section). I repeated for the INE
letters. I then selected all of the faces and chisel parts, and JOINED
them into one object.
I was then left with an "tube" and a "cap". I placed the cap (the
front face and chisel edge) directly over the tube and joined them
both. I didn't bother with a back face, but you could face it if you
like, or even copy the cap and scale it in its depth direction by -1
to get an inverted version that will fit on the back.
Thats it! I used "merge" at the end to connect everything together. Be
careful to turn Phong _OFF_. You WANT a faceted appearance.
I haven't completed the picture, and I should really work on my water
waves. Or my thesis. Sigh.
Anyway, the final letters looked VERY slick. Try it!
Another idea would be using the letters to slice out a hollow in a
solid object, to get a carved/stamped surface.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
APPENDIX H: Credits and email addresses
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Sandy Antunes (antunes@astro.psu.edu)
Edward Chadez (echadex@carl.org) Colorado Alliance of Research Libraries
Mark Davis (davis@soomee@rust.enet.dec.com)
Matt Feifarek (mattf@picard.cs.wisc.edu)
Duane Fields (n350bq@tamuts.tamu.edu)
Kevin Goroway (pawn@wpi.wpi.edu)
Mike Halvorsen
Jim Lange (jlange@oracle.com) Oracle Corporation
Harv Laser ({anywhere}!crash!hrlaser)
Glenn Lewis (glewis%pcocd2.intel.com@Relay.CS.Net)
Mark D. Manes (manes@vger.nsu.edu)
Stephen Menzies (S.Menzies@CAM.ORG)
Richard Nollman (rnollman@maxzilla.encore.com)
Helge Egelund Rasmussen (her@compel.dk)
Marc Rifkin (r38@psuvm.psu.edu)
Dave Schreiber (davids@slugmail.ucsc.edu)
Udo Schuermann (walrus@wam.umd.edu)
Sean Schur (schur@isi.edu) California Institute for the Arts
Bill Squier (u93_wsquier@vaxa.stevens-tech.edu)
Colin Stobbe (umstobb1@ccu.umanitoba.ca)
Scott Sutherland
Mark Thompson (mark@westford.ccur.com) Radiant Image Productions
Juan Trevino (tucker@mammoth.cs.unr.edu)
Steven Webb (webbs@handel.cs.colostate.edu)
Robert Wallace
Don Whitaker (dcwhitak@nyx.cs.du.edu)
Steve Worley (spworley@athena.mit.edu)
(denbeste@ursa-major.spdcc.com)
============================= END OF FILE ===============================